![](/img/trans.png)
[英]node-telegram-bot-api / How to get user message on a question?
[英]How to subscribe and unsubscribe a user from a telegram bot using Node.js node-telegram-bot-api?
我正在编写一个程序来使用 Node.js 和 node-telegram-bot-api 模块开发一个电报聊天机器人。 我想设置命令,以便在收到/取消订阅时,用户应该从机器人中取消订阅。 我阅读了该模块的 github 文档,但找不到实现此目的的方法。 https://github.com/yagop/node-telegram-bot-api/blob/master/doc/api.md
在这个文档中,有一个方法 deleteChat 可用,但我不确定它是否适用于该模块。 https://core.telegram.org/methods#working-with-chatssupergroupschannels
任何建议或帮助表示赞赏,谢谢!
为此,您需要一个数据库将用户设置为“已订阅”或“未订阅”。
我会给你一个商店包的例子你需要以下包:
store 包为本地存储,应用重启时可能会重置
const TelegramBot = require('node-telegram-bot-api');
// replace the value below with the Telegram token you receive from @BotFather
const token = 'YOUR_TELEGRAM_BOT_TOKEN';
var store = require('store')
var subscribed_users = store.get('subscribed')
// Create a bot that uses 'polling' to fetch new updates
const bot = new TelegramBot(token, {polling: true});
// Matches "/echo [whatever]"
bot.onText('/start', (msg) => {
// 'msg' is the received Message from Telegram
const chatId = msg.chat.id;
bot.sendMessage(chatId, 'Welcome!\nUser /subscribe to subscribe to newsletter or /unsubscribe to unsubscribe to news letter');
});
bot.onText('/subscribe', (msg) => {
if(!susbcribed_users){
var subscribed_users = []
}
const chatId = msg.chat.id;
//retrive subscribed users array data
if(subscribed_users.includes(msg.chat.id)){
bot.sendMessage(chatId, "You're already subscribed to newsletter!")
return
}
var new_data = subscribed_users.push(msg.chat.id)
store.set('subscribed', new_data)
bot.sendMessage(chatId, "You're subscribed to newsletter!")
})
bot.inText('/unsubscribe', (msg) => {
const chatId = msg.chat.id;
if(!subscribed_users.includes(msg.chat.id)){
bot.sendMessage(chatId, "You're not subscribed to newsletter!")
return
}
const newArr = arr.filter(object => {
return object !== msg.chat.id;
});
store.set('subscribed', newArr)
bot.sendMessage(chatId, "You're subscribed to newsletter!")
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.