用户加入频道时的 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 添加到 groupsupergroup 的新成员以及有关他们的信息(机器人本身可能是这些成员之一)

所以我认为你不能。

【讨论】:

【参考方案3】:

是的!你可以使用这个:

https://api.telegram.org/bot[TOKEN]/promoteChatMember?chat_id=@[channelname]&user_id=[user_id]

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

【讨论】:

以上是关于用户加入频道时的 Telegram Bot 事件的主要内容,如果未能解决你的问题,请参考以下文章

Telegram 通过 bot api 将成员添加到频道

Telegram Bot 如何从频道或群组中删除或移除消息或媒体

转发来自 Telegram Bot 的消息

Telegram Bot 电报机器人合集详解版

使用python-telegram-bot模块转发telegram机器人消息到钉钉平台

如何使用 Telegram API 通过给定的 joinlink 获取私人频道的聊天 ID?