sfa*_*oso 5 node.js telegram telegram-bot
机器人描述
我正在使用TelegrafJS开发Telegram机器人。我创建了自己的中间件,它应该处理发送到组的所有更新消息,特别是,如果更新是服务消息,则机器人必须将其删除。
问题
问题在于机器人仅捕获new_chat_members用户离开聊天时的事件,而left_chat_member不会调用该事件。
中间件代码
class MessageHandler {
/**
* Check if is a message service
*/
_checkServiceMessage(ctx) {
let unwantedMessages = ['new_chat_members', 'left_chat_member', 'new_chat_title'];
let isUnwanted = unwantedMessages.some(x => ctx.updateSubTypes.includes(x));
if (isUnwanted) {
console.log(ctx.updateSubTypes);
// Delete service message
ctx.deleteMessage().then(function (result) {
// add or remove user to my own db
}).catch(function (e) {
console.log(e);
});
}
}
middleware() {
return (ctx, next) => {
this._checkServiceMessage(ctx);
return next();
}
}
}
module.exports = MessageHandler;
Run Code Online (Sandbox Code Playgroud)
这是如何使用Middleware:
const Telegraf = require('telegraf');
const MessageHandler = require('../middlewares/handler');
const bot = new Telegraf(process.env.BOT_TOKEN);
bot.use(new MessageHandler().middleware());
bot.startPolling();
Run Code Online (Sandbox Code Playgroud)
如何复制
BothFather替换从in获取的 tokenprocess.env.BOT_TOKENnew_chat_membersleft_chat_member不会出现。奇怪的是:如果我删除 ctx.deleteMessage(),那么 中的所有代码都会出现isUnwanted该事件left_chat_member。
我在这个问题上花了好几天的时间,但我无法克服它。我在 TelegrafJS 上开了一张票,但到目前为止还没有任何进展。
我需要将加入我的组的用户存储在我自己的数据库中,并在用户离开时删除。
在我的代码中,我将机器人分为两组,我不知道这是否会导致问题,但我不这么认为。
有人可以向我解释一下发生了什么事吗?
| 归档时间: |
|
| 查看次数: |
1107 次 |
| 最近记录: |