【问题标题】:Creating a Welcome Bot Using python-telegram-bot使用 python-telegram-bot 创建欢迎机器人
【发布时间】:2021-11-11 03:13:36
【问题描述】:

我已经主持电报组一段时间了,使用 python-telegram-bot 包没有任何问题。我真的很喜欢它。但是,当新用户加入时,我似乎无法收到有效的“欢迎消息”。

现在,我尝试像使用命令和消息处理程序一样构建函数:

def welcome(update,context):
    #name = from_user.username
    #update.message.reply_text("""Welcome blah blah blah to the group!""") 

然后将其称为我的主要功能,如下所示:

dp = updater.dispatcher
dp.add_handler(ChatMemberHandler(welcome, ChatMemberHandler.CHAT_MEMBER))
updater.start_polling(allowed_updates=Update.ALL_TYPES)
updater.idle()

但出现错误:AttributeError: 'NoneType' object has no attribute 'reply_text'

所以我猜“成员加入群组”弹出窗口不被视为消息。但我不知道如何提取该事件​​或使用哪个处理程序。任何帮助将不胜感激!谢谢!

【问题讨论】:

  • update 中没有message 时,您正在尝试回复update.message。查看文档,您使用了错误的参数。它应该不是message
  • @thethiny 你知道它会是什么吗?对不起,这是我第一次构建电报机器人。除了消息,我还没有处理任何事情。谢谢!

标签: python python-3.x telegram python-telegram-bot


【解决方案1】:

正如thethiny 已经指出的,聊天成员更新没有相关消息:update.message 将是None,而update.chat_member 将是ChatMemberUpdated 的一个实例。请注意,Message.reply_text 只是Bot.send_message(chat_id=message.chat.id, ...) 的快捷方式,所以只要您有chat_id,您就可以使用例如context.bot.send_message - 你可以从ChatMemberUpdated.chat 得到chat_id。事实上,您仍然可以使用 PTB 快捷方式,例如update.effective_chat.send_message.

请查看文档

还有PTB提供的chatmemberbot.py example


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

【讨论】:

  • 绝对漂亮的解释!非常感谢!
  • 很高兴能提供帮助。如果我能解决您的问题,请考虑将我的答案标记为已接受的答案:)
猜你喜欢
  • 2018-09-04
  • 2020-10-01
  • 2022-11-23
  • 2021-06-01
  • 2018-08-11
  • 1970-01-01
  • 2020-04-04
  • 2020-05-18
  • 1970-01-01
相关资源
最近更新 更多