Telegram 机器人可以检测到加入频道活动的新成员吗?

问题描述 投票:0回答:2

我有一个 Telegram 机器人,我将此机器人设置为频道管理员。现在,当新用户通常加入频道(而不是群组)时,频道上没有消息,我们也无法使用

getUpdates
方法获取消息。从技术上讲,是否可以发布一条消息说“新用户已加入频道”,从而捕获“新成员”事件?让我知道。

telegram telegram-bot python-telegram-bot telegram-webhook node-telegram-bot-api
2个回答
5
投票

不幸的是,您目前无法检查用户是否通过 Telegram bot API 加入频道。也许将来你可以。

但是您可以在这里为团体或超级团体执行此操作:

https://core.telegram.org/bots/api#message找到

new_chat_members

这些也很有用:

用户加入频道时的 Telegram 机器人事件

如何使用 Telegram 机器人获取频道更新

更新:

但是具有管理员权限的 TG 机器人 api 可以看到其所有成员。因此,即使 api 不支持,它也可以跟踪计数并查看计数是否增加,然后知道有新成员加入。正确的?我不需要确切知道哪位新成员加入,只需要知道新成员加入即可分享欢迎信息

是的,您可以使用

getChatMembersCount
。以下是来自此链接的信息:

getChatMembersCount
:使用此方法获取聊天中的成员数量。成功时返回 Int。

也可以使用

getChatMember
这里是一些信息:

getChatMember:
使用此方法获取有关聊天成员的信息。成功时返回 ChatMember 对象。


0
投票

以下是检测新会员加入的方法:

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,
    )

欲了解更多详情,请访问此链接

© www.soinside.com 2019 - 2024. All rights reserved.