繁体   English   中英

如何使用 Node.js node-telegram-bot-api 从电报机器人订阅和取消订阅用户?

[英]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

任何建议或帮助表示赞赏,谢谢!

为此,您需要一个数据库将用户设置为“已订阅”或“未订阅”。

我会给你一个商店包的例子你需要以下包:

  • 店铺
  • 节点电报机器人 api
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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM