是否可以使用电报机器人将用户表单列入黑名单?

时间:2021-05-18 15:50:14

标签: telegram-bot python-telegram-bot

我是做这种项目的新手。我的目标是构建一个电报机器人将用户消息从机器人转发到一个频道。现在我面临着一些用户滥用发送干扰很多的垃圾消息。那么,是否可以将某些用户列入使用该机器人的黑名单?

我的源代码在这里Go to GitHub

2 个答案:

答案 0 :(得分:0)

机器人无法阻止用户(就像用户可以阻止机器人一样),但您可以选择不处理来自特定用户 ID 的更新。在这种情况下,我通常做的是使用 telegram.ext.TypeHandler(telegram.Update, callback) 其中 callback 看起来像

def callback(update, context):
    if update.effective_user and update.effective_user in blocked_users:
        # This stops any other handlers in higher groups from running   
        raise DispatcherHandlerStop 

然后将其注册到调度程序的低组(dispatcher.add_handler(…, group=-1))。 请查看 TypeHandlerDispatcherHandlerStopadd_handler 的文档以获取更多信息:)

跟踪 blocked_users 的一种方法是将该列表存储在 context.bot_data 中。


免责声明:我目前是 python-telegram-bot 的维护者。

答案 1 :(得分:0)

没有任何本地方法可以做到这一点,但是您可以拥有一个被阻止用户的列表(最好是一个单独的 JSON 文件以实现额外的模块化),并且每次使用机器人时,检查用户是否在该列表中:

def start(update, context):
  if update.effective_user.id in blacklist:
    pass # or do whatever you want
相关问题