Ryujinni
प्रोविडेंस नेटवर्क (प्रोविडेन्सिया) द्वारा संचालित, डिस्कॉर्ड के क्लेयरमोंट बॉट का एलेक्सिर संस्करण।
Ryujin, Clairemont बॉट के लिए राजनयिक समन्वय मॉड्यूल है। जबकि सिस्टम के अन्य मॉड्यूल सुरक्षा और प्रशासन संभालते हैं, Ryujin का ध्यान सहयोगी संबंधों को विकसित करने, संयुक्त पहलों का समन्वय करने और अंतर-गिल्ड चैनलों में शांति बनाए रखने पर है। यह Nostrum के साथ Elixir पर बनाया गया है और उच्च-प्रदर्शन कार्यों के लिए Rust-समर्थित सुविधाओं में विस्तार करने के लिए डिज़ाइन किया गया है।
◆ विशेषताएं
- गठबंधन-केंद्रित स्वचालन: इरादे सीधे संदेश और गिल्ड-स्तरीय संबंध प्रबंधन के लिए पूर्व-कॉन्फ़िगर किए गए हैं।
- आवाज-सक्षम: ऑडियो प्रेषण के लिए FFmpeg, Streamlink और yt-dlp समर्थन के साथ बंडल किया गया।
- Rust त्वरित: कम्प्यूट-भारी कार्यों को संभालने के लिए Rustler NIFs के लिए
native/ryujinक्रेट शामिल है। - स्क्रिप्टेड सेटअप: स्थानीय
install.shऔरrun.shस्क्रिप्ट दोहराने योग्य सेटअप के लिए टूलचेन और वातावरण का प्रबंधन करती हैं।
◆ पूर्वापेक्षाएँ
- Elixir ≥ 1.18 (मैचिंग Erlang/OTP रिलीज़ के साथ)
- PostgreSQL (डिफ़ॉल्ट रूप से
localhostपरpostgres/postgres) - Python 3 (वर्चुअलएनवी में Streamlink + yt-dlp के लिए)
curlऔरtar(FFmpeg डाउनलोड के लिए)- Rust टूलचेन (यदि मूल एक्सटेंशन को संशोधित कर रहे हैं)
शुरू करने से पहले सुनिश्चित करें कि हेल्पर स्क्रिप्ट निष्पादन योग्य हैं:
chmod +x install.sh run.sh

◆ कॉन्फ़िगरेशन
कॉन्फ़िगरेशन envs/ से लोड किया जाता है। रनटाइम envs/.env (साझा डिफ़ॉल्ट) और envs/dev.env जैसी पर्यावरण-विशिष्ट फ़ाइल को मर्ज करता है।
न्यूनतम रूप से, आपको अपना Discord टोकन envs/.env में परिभाषित करना होगा:
DISCORD_TOKEN=आपका_डिस्कॉर्ड_टोकन
रनटाइम स्क्रिप्ट स्वचालित रूप से स्थानीय vendor/bin और Python वर्चुअलएनवी को आपके PATH में जोड़ती हैं।
◆ स्थापना
इंस्टॉलर Mix निर्भरताएँ प्राप्त करता है और आवश्यक मीडिया बाइनरी को स्थानीय रूप से vendor/ निर्देशिका में चरणबद्ध करता है:
./install.sh
यह स्क्रिप्ट निम्नलिखित करेगी:
- Mix निर्भरताएँ प्राप्त और संकलित करना।
- एक स्थिर FFmpeg बिल्ड डाउनलोड करना।
- Streamlink और yt-dlp के लिए Python वर्चुअलएनवी बनाना।
◆ विकास में चलाना
रन स्क्रिप्ट का उपयोग करके विकास के लिए बॉट लॉन्च करें:
./run.sh
स्क्रिप्ट सत्यापित करती है कि सभी उपकरण (ffmpeg, yt-dlp, आदि) मौजूद हैं, डेटाबेस माइग्रेशन चलाती है, और iex -S mix के माध्यम से Phoenix एप्लिकेशन शुरू करती है।
◆ PostgreSQL AGE एकीकरण
प्रोजेक्ट में ग्राफ़ क्वेरी के लिए Apache AGE एक्सटेंशन को सक्षम करने के लिए एक माइग्रेशन शामिल है। अपने PostgreSQL सर्वर पर AGE स्थापित करने के बाद, run.sh स्क्रिप्ट या mix ecto.setup इसे डेटाबेस में सक्षम करेगा।
फिर आप Ecto.Repo.query/2 के माध्यम से Cypher क्वेरी जारी कर सकते हैं:
Repo.query!("""
SELECT *
FROM cypher('ryujin_graph', $$
MATCH (n) RETURN n
$$) AS (node ag_catalog.agtype);
""")
◆ मूल Rust एक्सटेंशन
native/ryujin क्रेट Rustler के साथ एकीकृत है। Elixir और Rust कोड mix compile के साथ एक साथ संकलित किए जाते हैं। src/lib.rs में नए NIF जोड़ें और उन्हें lib/ryujin.ex मॉड्यूल के माध्यम से Elixir में उजागर करें।
◆ समस्या निवारण
- "command not found": सुनिश्चित करें कि आपने
chmod +x install.sh run.shचलाया है। - पुरानी बाइनरी:
vendor/निर्देशिका हटाएँ और./install.shपुनः चलाएँ। - डेटाबेस मौजूद नहीं है: सुनिश्चित करें कि PostgreSQL चल रहा है और
./run.shपुनः चलाएँ, जोmix ecto.createनिष्पादित करता है। - Observer कनेक्ट करें: बॉट एक नामित नोड के रूप में चलता है। एक नया टर्मिनल खोलें और चलाएँ:
iex --sname observer --cookie ryujin_cookie
:observer.start()
