मैं नोड-टेलीग्राम-बॉट-एपीआई के साथ टेलीग्राम बॉट बना रहा हूं और कमांड सूची बहुत लंबी होने तक सब कुछ ठीक है। जहाँ बॉट को इनिशियलाइज़ किया गया था, वहाँ सिंगल .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 फ़ाइलों को शामिल करने की अनुमति देता है, लेकिन चर के मान के रूप में नहीं

पीएस .: हां, मैं नोडजेएस में नौसिखिया हूं और समझता हूं कि यह सवाल बेवकूफ लग सकता है। हां, मैं केवल जावास्क्रिप्ट की मूल बातें जानता हूं। लेकिन मुझे नहीं पता कि मेरा प्रश्न सही तरीके से तैयार किया गया है या नहीं, यह सुनिश्चित नहीं है, इसलिए उन सभी को धन्यवाद जो जरूरत पड़ने पर सुधार में मदद करेंगे।

0
Ryoidenshi Aokigahara 12 अक्टूबर 2020, 16:28
हो सकता है कि "कमांड" के बजाय "ईवेंट श्रोताओं" को लिखना अधिक सही हो?
 – 
Ryoidenshi Aokigahara
12 अक्टूबर 2020, 16:40

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');
1
Dharman 17 जिंदा 2021, 11:35
कुछ भी दोहराया नहीं जाएगा? मेरा मतलब है कि app.js में परिणाम के रूप में "./bot" की लगभग दो बार आवश्यकता होती है क्षमा करें यदि यह प्रश्न मूर्खतापूर्ण है, तो शायद मुझे आवश्यकता के तर्क को सही ढंग से समझ में नहीं आता है
 – 
Ryoidenshi Aokigahara
12 फरवरी 2021, 22:18
1
हां, क्योंकि bot.js सिंगलटन मॉड्यूल होगा, यानी यह मेमोरी में उसी ऑब्जेक्ट को संदर्भित करेगा। आप इसके बारे में medium.com/@lazlojuly/… पर अधिक पढ़ सकते हैं।
 – 
Yin Hao Goh
25 फरवरी 2021, 14:48