创建电报机器人后,访问并管理该机器人的频道。用户加入该频道后如何获取频道成员列表或事件?
对当前的答案非常失望,所以我将留下一个更新的(截至 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))
我知道不久前有人问过这个问题,但我希望这可以帮助其他人搜索。
要获取加入 group 或 channel 的用户的更新,您必须为您的机器人正确设置 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"]
如果您想收到有关加入会员频道的消息,您需要创建带有加入请求的邀请链接,当用户转到此链接时,您的机器人会看到它
是的!你可以用这个:
https://api.telegram.org/bot[TOKEN]/promoteChatMember?chat_id=@[频道名称]&user_id=[user_id]
如果用户加入则响应正常,否则响应不正常。