How to get Telegram channel users list with Telegram Bot API

时间:2015-11-21 14:08:10

标签: telegram telegram-bot

Anybody give a starter on how may I get information about users from my telegram bot. Imagine my bot in an admin user in my channel and I want to get my channel user list or to be noticed when a new user joins. How can I do that. Telegram's documents are so unorganized. So far I have looked at these:

但这些都没有帮助。

7 个答案:

答案 0 :(得分:10)

要获取用户列表,您需要使用电报API。

电报API相当复杂。有些客户可以更快地完成工作。

对于python,有Telethon,获取频道用户的方法是:

get_full_channel

答案 1 :(得分:9)

Telegram Bot不保留用户的任何信息。您应该自己保存与机器人通信的所有用户。例如,将其ID存储在数据库中。

如果是频道 - 您可以从频道成员列表中获取此信息。

如果您需要得到通知 - 您的机器人应该将用户存储在某处并检查用户是否是新用户。

答案 2 :(得分:3)

要获取用户列表,您需要使用电报API。

电报API相当复杂。有些客户可以更快地完成工作。

对于python,有Telethon,获取频道用户的代码是:

leftButton.setText(String.valueof(rand1));
rightButton.setText(String.valueof(rand2));

答案 3 :(得分:3)

正如其他人已经提到的那样,您无法通过Bot API列出频道用户。

但是您可以使用MTProto API以普通用户身份登录,并以编程方式访问您在台式机或移动应用程序中看到的所有内容。

要使用MTProto,您需要使用现有的电报帐户以及https://my.telegram.org/api_idapi_hash登录get credentials

这是一个如何使用Telethon python库获取电报频道/组用户列表的有效示例。

from telethon import TelegramClient, sync

api_id = 'FILL REAL VALUES HERE'
api_hash = 'FILL REAL VALUES HERE'

client = TelegramClient('xxx', api_id, api_hash).start()

# get all the channels that I can access
channels = {d.entity.username: d.entity
            for d in client.get_dialogs()
            if d.is_channel}

# choose the one that I want list users from
channel = channels[channel_name]

# get all the users and print them
for u in client.get_participants(channel):
    print(u.id, u.first_name, u.last_name, u.username)

使用client.get_entity()通过名称/电话/ URL搜索频道/用户很容易。

答案 4 :(得分:0)

Bot无法通过api访问频道用户列表。 人们有两种可能实现这一目标:

  • 捕获所有频道消息并过滤" XXX加入了频道"一个 - 这是理论上的,我没有尝试
  • 使用https://github.com/vysheng/tgl

答案 5 :(得分:0)

Telegram bot没有任何api可以访问频道或群组用户。 如果访问组用户对您很重要,我建议您使用Telegram-CLI。您可以访问所有Telegran用户帐户的API,以便您可以访问所有组的用户数据。

https://github.com/vysheng/tg

答案 6 :(得分:0)

使用不依赖于语言的Telegram API的一种很好的方式是使用https://www.t-a-a-s.ru/。您无需安装任何内容-您可以通过任何语言的HTTP请求进行查询。

  1. 登录并创建API密钥
  2. 使用密钥,进行以下HTTP请求以获取成员列表
GET https://www.t-a-a-s.ru/client
{
  "api_key": "YOUR_API_KEY",
  "@type": "getSupergroupMembers",
  "supergroup_id": "xxx",
  "limit": "200"
}