我有一个 Telegram 机器人,我将此机器人设置为频道管理员。现在,当新用户通常加入频道(而不是群组)时,频道上没有消息,我们也无法使用
getUpdates
方法获取消息。从技术上讲,是否可以发布一条消息说“新用户已加入频道”,从而捕获“新成员”事件?让我知道。
不幸的是,您目前无法检查用户是否通过 Telegram bot API 加入频道。也许将来你可以。
但是您可以在这里为团体或超级团体执行此操作:
https://core.telegram.org/bots/api#message找到
new_chat_members
这些也很有用:
更新:
但是具有管理员权限的 TG 机器人 api 可以看到其所有成员。因此,即使 api 不支持,它也可以跟踪计数并查看计数是否增加,然后知道有新成员加入。正确的?我不需要确切知道哪位新成员加入,只需要知道新成员加入即可分享欢迎信息
是的,您可以使用
getChatMembersCount
。以下是来自此链接的信息:
:使用此方法获取聊天中的成员数量。成功时返回 Int。getChatMembersCount
也可以使用
getChatMember
和这里是一些信息:
使用此方法获取有关聊天成员的信息。成功时返回 ChatMember 对象。getChatMember:
以下是检测新会员加入的方法:
async def greet_chat_members(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
"""Greets new users in chats and announces when someone leaves"""
result = extract_status_change(update.chat_member)
if result is None:
return
was_member, is_member = result
cause_name = update.chat_member.from_user.mention_html()
member_name = update.chat_member.new_chat_member.user.mention_html()
if not was_member and is_member:
await update.effective_chat.send_message(
f"{member_name} was added by {cause_name}. Welcome!",
parse_mode=ParseMode.HTML,
)
elif was_member and not is_member:
await update.effective_chat.send_message(
f"{member_name} is no longer with us. Thanks a lot, {cause_name} ...",
parse_mode=ParseMode.HTML,
)
欲了解更多详情,请访问此链接;