用户加入频道时的 Telegram Bot 事件
Posted
技术标签:
【中文标题】用户加入频道时的 Telegram Bot 事件【英文标题】:Telegram Bot Event When Users Join To Channel 【发布时间】:2016-11-14 10:24:53 【问题描述】:创建电报机器人后,访问并管理此机器人到频道。用户加入该频道时如何获取频道成员列表或事件?
【问题讨论】:
【参考方案1】:对当前的答案非常失望,所以我会留下一个更新的(截至 2018 年 2 月)答案,解释如何使用 Telegram API 本身以及我正在使用的框架 Telegraf for Node 执行此操作.
就 API 而言,Telegram API 既非常强大,又非常简单。如果您使用的是获取更新的轮询方法,而不是 websockets 是另一个问题,那么检查新人是否已添加到组或频道非常容易。
API 方法getUpdates
返回一个Update
对象数组,其中包含您可能想要的所有可能信息,包括发送的任何消息、内联查询和新聊天成员。要获得任何新的聊天成员,您只需访问update.message.new_chat_members
,其中将包含一系列新用户。作为参考,您可以查看 API 文档here。
要在浏览器或 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))
我知道这是不久前被问到的,但我希望这有助于其他人搜索。
【讨论】:
@watzon 问题是您使用 new_chat_members 仅针对群组和超级群组获取更新,而不针对 频道 有没有办法获取 new_chat_members 的用户名? @t1maccapp 有没有办法获取频道的更新? @ИльяЗеленько 如上所述,您无法将它们用于频道【参考方案2】:来自docs:
new_chat_members 添加到 group 或 supergroup 的新成员以及有关他们的信息(机器人本身可能是这些成员之一)
所以我认为你不能。
【讨论】:
【参考方案3】:是的!你可以使用这个:
https://api.telegram.org/bot[TOKEN]/promoteChatMember?chat_id=@[channelname]&user_id=[user_id]
如果用户加入响应正常,否则响应不正常。
【讨论】:
以上是关于用户加入频道时的 Telegram Bot 事件的主要内容,如果未能解决你的问题,请参考以下文章
Telegram Bot 如何从频道或群组中删除或移除消息或媒体