电报Python Bot | Bot加入群组时的事件

时间:2018-08-26 18:11:38

标签: python events telegram telegram-bot python-telegram-bot

我现在正在为电报开发python脚本。问题是:

我怎么知道我的机器人何时添加到群组中?是否有活动或其他活动? 我希望Bot向他所加入的小组发送消息,说“嗨”和他能做的事情。

我不知道是否有任何类型的处理程序可以处理此问题。

2 个答案:

答案 0 :(得分:2)

非常大概,您需要执行以下操作:注册一个处理程序,该处理程序仅过滤有关新聊天成员的服务消息。然后检查该漫游器是否是新的聊天成员之一。

from telegram.ext import Updater, MessageHandler, Filters


def new_member(bot, update):
    for member in update.message.new_chat_members:
        if member.username == 'YourBot':
            update.message.reply_text('Welcome')

updater = Updater('TOKEN')

updater.dispatcher.add_handler(MessageHandler(Filters.status_update.new_chat_members, new_member))

updater.start_polling()
updater.idle()

答案 1 :(得分:0)

带回调(首选)

从版本12开始,处理更新的首选方法是通过回调。要在版本13之前使用它们,请在use_context=True中声明Updater。版本13会将其作为默认设置。

from telegram.ext import Updater, MessageHandler, Filters

def new_member(update, context):
    for member in update.message.new_chat_members:
        if member.username == 'YourBot':
            update.message.reply_text('Welcome')

updater = Updater('TOKEN', use_context=True)  # use_context will be True by default in version 13+

updater.dispatcher.add_handler(MessageHandler(Filters.status_update.new_chat_members, new_member))

updater.start_polling()
updater.idle()

请注意,这里的顺序已更改。现在,它不是第一个参数,而不是第二个更新。执行以下代码将导致如下异常:

AttributeError: 'CallbackContext' object has no attribute 'message'

没有回调(在版本12中已弃用)

公然复制mcont's answer

from telegram.ext import Updater, MessageHandler, Filters


def new_member(bot, update):
    for member in update.message.new_chat_members:
        if member.username == 'YourBot':
            update.message.reply_text('Welcome')

updater = Updater('TOKEN')

updater.dispatcher.add_handler(MessageHandler(Filters.status_update.new_chat_members, new_member))

updater.start_polling()
updater.idle()