मैं नोड-टेलीग्राम-बॉट-एपीआई के साथ टेलीग्राम बॉट बना रहा हूं और कमांड सूची बहुत लंबी होने तक सब कुछ ठीक है। जहाँ बॉट को इनिशियलाइज़ किया गया था, वहाँ सिंगल .js फ़ाइल में कई कमांड देना सहज नहीं है।
मैं module.exports के साथ एक बुनियादी बात समझ रहा हूं, जिसके उपयोग से मैं सर्विंग फंक्शन को अलग-अलग फाइलों में स्थानांतरित कर सकता हूं, लेकिन यह अभी भी वह नहीं है जिसके बारे में मैं सोच रहा हूं।
जब आप html पृष्ठ (मूल) बनाते हैं, तो आप टैग के माध्यम से अपनी जावास्क्रिप्ट फ़ाइलें जोड़ते हैं, और इस तरह आपको पृष्ठ पर लोड की गई कुछ स्क्रिप्ट एक बड़ी चीज़ के रूप में मिलती हैं। जब आप PHP का उपयोग करते हैं, तो आप मुख्य स्क्रिप्ट में अन्य स्क्रिप्ट सम्मिलित करने के लिए आवश्यकता या शामिल करें का उपयोग कर सकते हैं। अंत में Express.js बाहरी राउटर मॉड्यूल बनाने की अनुमति देता है, और इसे मुख्य स्क्रिप्ट में expressApp.use(myRouterModule)
के रूप में उपयोग करता है।
मैं यही खोजने की कोशिश कर रहा हूं कि कैसे। कुछ संरचना बनाना, जब किसी भी श्रेणी द्वारा समूहीकृत कुछ कमांड को अलग-अलग .js फ़ाइल में रखा जाएगा और mybot.useCommands(CommandGroup1,CommandGroup2)
जैसी किसी चीज़ का उपयोग किया जाएगा
अर्थात। CommandGroup1.js में शामिल होंगे:
bot.onText(/\/start/,function(msg){...})
bot.onText(/\/echo/,function(msg){...})
एक और TestGroup.js में शामिल होगा
bot.onText(/\/test1/,function(msg){...})
bot.onText(/\/AnotherTest/,function(msg){...})
और मुख्य app.js इन दोनों फाइलों का उपयोग ईवेंट श्रोताओं के साथ करेंगे
var bot = new TelegramBot(token, { polling: true });
includeHere('./CommandGroup1.js')
includeHere('./TestGroup.js')
मैंने नोड-टेलीग्राम के API की जांच की है- bot-api लेकिन ऐसा कुछ नहीं मिला, लेकिन
- हो सकता है कि मेरी खोज गलत थी (गलत कीवर्ड, विवरण की गलतफहमी)
- NodeJS रनटाइम हो सकता है जावास्क्रिप्ट को कोड के हिस्से के रूप में बाहरी .js फ़ाइलों को शामिल करने की अनुमति देता है, लेकिन चर के मान के रूप में नहीं
पीएस .: हां, मैं नोडजेएस में नौसिखिया हूं और समझता हूं कि यह सवाल बेवकूफ लग सकता है। हां, मैं केवल जावास्क्रिप्ट की मूल बातें जानता हूं। लेकिन मुझे नहीं पता कि मेरा प्रश्न सही तरीके से तैयार किया गया है या नहीं, यह सुनिश्चित नहीं है, इसलिए उन सभी को धन्यवाद जो जरूरत पड़ने पर सुधार में मदद करेंगे।
1 उत्तर
आप एक अलग मॉड्यूल (जैसे bot.js
) बना सकते हैं जो बॉट ऑब्जेक्ट को सिंगलटन के रूप में निर्यात करता है और आपकी प्रत्येक अन्य फाइल में कमांड/श्रोता/हैंडलर होते हैं, आपको बस बॉट के समान इंस्टेंस को आयात करने की आवश्यकता होती है।
उदाहरण के लिए, bot.js
में:
const TelegramBot = require('node-telegram-bot-api');
const bot = new TelegramBot(token, { polling: true });
module.exports = bot;
CommandGroup1.js
में:
const bot = require('./bot');
bot.onText(/\/start/,function(msg){...});
bot.onText(/\/echo/,function(msg){...});
TestGroup.js
में:
const bot = require('./bot');
bot.onText(/\/test1/,function(msg){...});
bot.onText(/\/AnotherTest/,function(msg){...});
app.js
में:
require('./CommandGroup1');
require('./TestGroup');
bot.js
सिंगलटन मॉड्यूल होगा, यानी यह मेमोरी में उसी ऑब्जेक्ट को संदर्भित करेगा। आप इसके बारे में medium.com/@lazlojuly/… पर अधिक पढ़ सकते हैं।
संबंधित सवाल
नए सवाल
node.js
Node.js एक घटना-आधारित, गैर-अवरोधक, अतुल्यकालिक I / O रनटाइम है जो Google के V8 जावास्क्रिप्ट इंजन और libuv लाइब्रेरी का उपयोग करता है। इसका उपयोग उन अनुप्रयोगों को विकसित करने के लिए किया जाता है जो क्लाइंट पर और साथ ही सर्वर साइड पर जावास्क्रिप्ट को चलाने की क्षमता का भारी उपयोग करते हैं और इसलिए कोड के पुन: प्रयोज्य और संदर्भ स्विचिंग की कमी से लाभान्वित होते हैं।