用户加入频道时的 Telegram Bot 事件

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

创建电报机器人后,访问并管理该机器人的频道。用户加入该频道后如何获取频道成员列表或事件?

bots telegram
5个回答
28
投票

对当前的答案非常失望,所以我将留下一个更新的(截至 2018 年 2 月)答案,解释如何使用 Telegram API 本身以及我正在使用的框架 Telegraf for Node 来执行此操作.

Telegram API 非常强大,而且就 API 而言非常简单。如果您使用轮询方法来获取更新,而不是使用 websocket(这是一个完全不同的问题),那么检查是否有人已添加到组或频道中是非常容易的。

API 方法

getUpdates
返回一组
Update
对象,其中包含您可能需要的所有可能信息,包括发送的任何消息、内联查询和新的聊天成员。要获得任何新的聊天成员,您只需访问
update.message.new_chat_members
,其中将包含一组新用户。作为参考,您可以查看 API 文档这里

要在浏览器中或使用curl获取更新对象,您所要做的就是向https://api.telegram.org/botYOUR-BOT-TOKEN/getUpdates发送GET或POST请求。然后寻找

messages->new_chat_members

如果您将 Telegraf 机器人框架与 NodeJs 结合使用,您可以将

bot.on
方法与事件
new_chat_members
结合使用。

示例:

bot.on('new_chat_members', (ctx) => console.log(ctx.message.new_chat_members))

我知道不久前有人问过这个问题,但我希望这可以帮助其他人搜索。


4
投票

来自文档

new_chat_members 添加到groupsupergroup的新成员以及有关他们的信息(机器人本身可能是这些成员之一)

所以我认为你不能。


2
投票

要获取加入 groupchannel 的用户的更新,您必须为您的机器人正确设置 Webhook。默认情况下禁用此更新类型。请参阅https://core.telegram.org/bots/api#setwebhook

允许更新

您希望机器人执行的更新类型的 JSON 序列化列表 收到。例如,指定 [“message”, “edited_channel_post”, “callback_query”] 仅接收这些类型的更新。查看更新 获取可用更新类型的完整列表。指定一个空列表 接收所有更新类型除了chat_member(默认)。如果不 指定后,将使用之前的设置。

请注意,此参数不会影响调用 getUpdates 之前创建的更新,因此可能会收到不需要的更新 短时间内。

因此,请求应如下所示:

https://api.telegram.org/<BOT_TOKEN>/setWebhook?url=<WEBHOOK_URL>&allowed_updates=["chat_member"]

0
投票

如果您想收到有关加入会员频道的消息,您需要创建带有加入请求的邀请链接,当用户转到此链接时,您的机器人会看到它


-3
投票

是的!你可以用这个:

https://api.telegram.org/bot[TOKEN]/promoteChatMember?chat_id=@[频道名称]&user_id=[user_id]

如果用户加入则响应正常,否则响应不正常。

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