如何在Telegram欢迎机器人中实现艾特新成员并回复入群系统消息功能
Telegram欢迎机器人功能修改方案
你需要的两个功能可通过修改welcome函数实现,核心修改逻辑如下:
- 要@提及新成员,使用Telegram HTML解析模式支持的用户链接格式:
<a href="tg://user?id=用户ID">用户名</a>,点击即可触发艾特效果 - 要回复系统生成的入群通知消息,调用
send_message时传入reply_to_message_id参数,值为系统入群通知的消息ID(也就是update.message.message_id)
修改后的完整welcome函数代码如下:
# Welcome a user to the chat def welcome(update, context, new_member): """ Welcomes a user to the chat """ message = update.message chat_id = message.chat.id logger.info( "%s joined to chat %d (%s)", escape(new_member.first_name), chat_id, escape(message.chat.title), ) # Pull the custom message for this chat from the database text = db.get(str(chat_id)) # Use default message if there's no custom one set if text is None: text = "Hello $username! Welcome to $title 😊" # 替换用户名为带@链接的格式 mention_user = f'<a href="tg://user?id={new_member.id}">{escape(new_member.first_name)}</a>' text = text.replace("$username", mention_user) text = text.replace("$title", escape(message.chat.title)) # 新增reply_to_message_id参数,回复系统入群通知 send_async( context, chat_id=chat_id, text=text, parse_mode=ParseMode.HTML, reply_to_message_id=message.message_id )
注意事项
- 原代码已经导入
escape方法,无需额外引入 - 确保机器人在群组中拥有发送消息的权限,否则无法正常发送欢迎内容
- 如果自定义欢迎消息里需要保留纯文本用户名,可以额外增加一个
$username_plain占位符按需使用
内容的提问来源于stack exchange,提问作者user16560224
相关产品推荐
相关产品推荐

