我现在正在为电报开发python脚本。问题是:
我怎么知道我的机器人何时添加到群组中?是否有活动或其他活动? 我希望Bot向他所加入的小组发送消息,说“嗨”和他能做的事情。
我不知道是否有任何类型的处理程序可以处理此问题。
答案 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'
公然复制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()