电报机器人 – 如何获得群聊ID?

我一直在使用telegram_bot ,并试图让groupChat id发送通知到群聊,但不知道我有哪些方法使用它。

为了获得聊天ID,我使用message.chat.id时,机器人参与聊天,但我必须使用获取群聊ID无法find/

为了获得群聊ID,请按如下操作:

  1. 将电报BOT添加到组。

  2. 获取您的BOT的更新列表:

    https://api.telegram.org/bot<YourBOTToken>/getUpdates 

    例如:

     https://api.telegram.org/botjbd78sadvbdy63d37gda37bd8/getUpdates 
  3. 寻找“聊天”对象:

“从” 3::{ “UPDATE_ID”:8393, “消息”:{ “MESSAGE_ID”{ “ID”:7474, “如first_name”: “AAA”}, “聊天”:{ “ID”:“标题“:” “},” date “:25497”,new_chat_participant “:{” ID “:71”,如first_name “:” NAME”, “用户名”: “YOUR_BOT_NAME”}}}

这是您将BOT添加到组中时的响应示例。

  1. 使用“聊天”对象的“ID”发送您的消息。

这是几个小时挣扎之后为我工作的序列:

假设机器人名称是my_bot

1-将bot添加到组中。
转到组,点击组名,点击添加成员,在search框中search你的机器人:@my_bot,select你的机器人,然后点击添加。

2-发送一个虚拟消息到机器人。
你可以使用这个例子: /my_id @my_bot
(我试过几条消息,并不是所有的消息都可以工作,上面的例子工作正常,也许消息应该以/开始)

3-转到以下url: https://api.telegram.org/botXXX:YYYY/getUpdates ://api.telegram.org/botXXX:YYYY/ https://api.telegram.org/botXXX:YYYY/getUpdates
用您的bot令牌replaceXXX:YYYY

4-寻找“聊天”:{“id”: – zzzzzzzzzz,
-zzzzzzzzzz是您的聊天ID(带负号)。

5 testing:您可以testing发送消息给curl的组:

 curl -X POST "https://api.telegram.org/botXXX:YYYY/sendMessage" -d "chat_id=-zzzzzzzzzz&text=my sample text" 

如果你错过了第二步,你所寻找的小组将不会有更新。 另外,如果有多个组,则可以在响应中查找组名(“title”:“ group_name ”)。

希望这可以帮助。

您可以以相同的方式检索组ID。 它在消息体中显示为message.chat.id ,它通常是一个负数,正常聊天是正的。

组ID和聊天ID只能从收到的消息中检索,没有可用的调用来检索活动组等。当您收到消息并将其存储在caching或类似内容中时,您必须记住组ID。

截至2017年底,只需:

  • 邀请@RawDataBot到你的组。

join后,会输出一个JSON文件,其中您的聊天ID将位于message.chat.id

 "message": { "chat": { "id": -210987654, "title": ..., "type": "group", ... } ... } 

之后一定要踢你的小组的@RawDataBot。

使用python和telethon很容易获得聊天ID。 这个解决scheme最适合那些使用电报API的人。

如果你没有telethon,运行这个:

 pip install telethon 

如果您没有电报注册的应用程序,请注册一个: 在这里输入图像说明 链接是这样的: https : //my.telegram.org/

然后运行下面的代码:

 from telethon import InteractiveTelegramClient from telethon.utils.tl_utils import get_display_name client = InteractiveTelegramClient('session_id', 'YOUR_PHONE_NUMBER', api_id=1234YOURAPI_ID, api_hash='YOUR_API_HASH') dialog_count = 10 dialogs, entities = client.get_dialogs(dialog_count) for i, entity in enumerate(entities): i += 1 # 1-based index print('{}. {}. id: {}'.format(i, get_display_name(entity), entity.id)) 

您可能希望向您的群组发送消息,以便群组显示在列表的顶部。