310

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

当机器人参与聊天时,我使用 message.chat.id 获取聊天 id,但我必须使用它来获取群聊 id 找不到/

4

16 回答 16

404

要获取群聊 id,请执行以下操作:

  1. 将 Telegram BOT 添加到组中。

  2. 获取 BOT 的更新列表:

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

    前任:

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

{"update_id":8393,"message":{"message_id":3,"from":{"id":7474,"first_name":"AAA"},"chat":{"id":<group_ID> ,"title":""},"date":25497,"new_chat_participant":{"id":71,"first_name":"NAME","username":"YOUR_BOT_NAME"}}}

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

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

  2. (如果您使用机器人创建了新组,并且您只获得{"ok":true,"result":[]}、删除并再次将机器人添加到组中)

  3. 私人图表仅适用于图像argoprojlabs/argocd-notifications:v1.1.0或以上。

于 2015-09-14T19:10:07.577 回答
219

在挣扎了几个小时后,这是对我有用的序列:

假设机器人名称是my_bot

1-将机器人添加到组中。
转到组,单击组名称,单击添加成员,在搜索框中搜索您的机器人,如下所示:@my_bot,选择您的机器人并单击添加。

2-向机器人发送虚拟消息。
您可以使用此示例:(/my_id @my_bot
我尝试了一些消息,但并非所有消息都有效。上面的示例工作正常。也许消息应该以 / 开头)

3- 转到以下网址: https://api.telegram.org/botXXX:YYYY/getUpdates
将 XXX:YYYY 替换为您的机器人令牌

4- 查找 "chat":{"id":-zzzzzzzzzz,
-zzzzzzzzzz 是您的聊天 ID(带有负号)。

5-测试:您可以测试使用 curl 向群组发送消息:

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

如果您错过了第 2 步,则您要查找的组将没有更新。此外,如果有多个组,您可以在响应中查找组名(“title”:“ group_name ”)。

希望这可以帮助。

于 2016-07-15T06:01:34.170 回答
198

截至 2021 年 5 月,只需:

  • 邀请@RawDataBot加入您的群组。

加入后,它将输出一个 JSON 文件,您的聊天 ID将位于message.chat.id中。

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

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

于 2017-09-15T20:28:09.070 回答
72

2018 年年中之后:
1:) 邀请@getidsbot@RawDataBot加入您的群组并从聊天 ID 字段中获取您的群组 ID。

Message
 ├ message_id: 338
 ├ from
 ┊  ├ id: *****
 ┊  ├ is_bot: false
 ┊  ├ first_name: 사이드
 ┊  ├ username: ******
 ┊  └ language_code: en
 ├ chat
 ┊  ├ id: -1001118554477    // This is Your Group id
 ┊  ├ title: Test Group
 ┊  └ type: supergroup
 ├ date: 1544948900
 └ text: A

2 :) 使用像Plus Messenger这样的非官方 Messenger并在群组/频道信息中查看您的群组 ID。

2018年中之前:(不要使用)
1:转到(https://web.telegram.org
2:转到您的Gorup并找到您的Gorup链接(https://web.telegram.org/#/im ?p=g154513121 )
3:在 g 之后复制该数字并在其之前放置 (-) -154513121
4:将您的消息发送给 Gorup bot.sendMessage(-154513121, "Hi")
我现在测试并像魅力一样工作

于 2018-06-02T22:15:11.253 回答
19

您可以通过这种方式获取聊天 ID。

在与您的机器人进行私人聊天时,发送一条随机消息。稍后您将搜索此消息。

从 bot_father 获取您的 API 令牌:XXXXXXXXX:YYYYYYY-YYYYYYYYYYYYYYYYY_YY

然后,在您的浏览器上使用该 url 发出请求:

https://api.telegram.org/botXXXXXXXXX:YYYYYYY-YYYYYYYYYYYYYYYYY_YY/getUpdates

该请求返回一个 json 响应,在 json 文本中搜索您random message并获取该对象中的聊天 ID。

于 2018-04-16T08:00:30.773 回答
16

我发现仅使用电报网络的最简单方法:

  • 在浏览器中打开web.telegram(在我的例子中是 chrome)
  • 右键单击左侧菜单上的组名称
  • 点击“检查”按钮
  • 您将在属性 data-peer-id="-xxxxxxxxxx" 或 peer="-xxxxxxxxxx"中看到组 ID

群聊ID:-xxxxxxxxxx

频道聊天ID:-100xxxxxxxxxx

(对于某些频道/组,您需要添加 -100 前缀

编辑:在某些情况下,当您单击组名时,ID 会显示在浏览器地址栏中

https://web.telegram.org/z/#-xxxxxxxxxx

于 2021-09-23T14:55:56.000 回答
11

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

如果您没有 Telethon,请运行以下命令:

pip install telethon

如果您没有注册过 Telegram 的应用,请注册一个:在此处输入图像描述 链接如下: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))

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

于 2017-06-10T16:17:16.580 回答
9

您可以用相同的方式检索组 ID。它出现在消息正文中message.chat.id,通常为负数,正常聊天为正数。

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

于 2015-09-07T09:25:13.960 回答
8

我对错误 {"ok":true,"result":[]} 的第二个解决方案

  1. 加入你的电报群
  2. 添加新用户(邀请)
  3. 搜索“getidsbot”=>@getidsbot
  4. 信息:/start@getidsbot
  5. 现在你看到了身份证。看起来像 1068773197,对于机器人来说是 -1001068773197(带有 -100 前缀)!!!
  6. 将机器人踢出群组。
  7. 现在转到 Webbrowser 并发送此行(测试消息):
https://api.telegram.org/botAPITOKENNUMBER:APITOKENKEYHERE/sendmessage?chat_id=-100GROUPNUMBER&text=test

编辑 API 令牌和组 ID!

于 2021-01-29T10:08:54.760 回答
5

创建一个机器人,或者如果已经创建了如下设置:

有权访问消息

显然,无论 Telegram 组的新旧程度如何:

  1. 将机器人添加到组

  2. 从组中删除机器人

  3. 再次将机器人添加到组

  4. 创建脚本文件并运行getUpdates方法示例:

    var vApiTokenTelegram = "1234567890:???>yg5GeL5PuItAOEhvdcPPELAOCCy3jBo"; // @?????Bot API token
    var vUrlTelegram = "https://api.telegram.org/bot" + vApiTokenTelegram;

    function getUpdates() {
        var response = UrlFetchApp.fetch(vUrlTelegram + "/getUpdates");
        console.log(response.getContentText());
    }
  1. 函数应将以下内容记录到控制台:
[20-04-21 00:46:11:130 PDT] {"ok":true,"result":[{"update_id":81329501,
"message":{"message_id":975,"from":{"id":962548471,"is_bot":false,"first_name":"Trajano","last_name":"Roberto","username":"TrajanoRoberto","language_code":"en"},"chat":{"id":-1001202656383,"title":"R\u00e1dioRN - A voz da na\u00e7\u00e3o!","type":"supergroup"},"date":1587454914,"left_chat_participant":{"id":1215098445,"is_bot":true,"first_name":"MediaFlamengoRawBot","username":"MediaFlamengoRawBot"},"left_chat_member":{"id":1215098445,"is_bot":true,"first_name":"MediaFlamengoRawBot","username":"MediaFlamengoRawBot"}}},{"update_id":81329502,
"message":{"message_id":976,"from":{"id":962548471,"is_bot":false,"first_name":"Trajano","last_name":"Roberto","username":"TrajanoRoberto","language_code":"en"},"chat":{"id":-1001202656383,"title":"R\u00e1dioRN - A voz da na\u00e7\u00e3o!","type":"supergroup"},"date":1587454932,"new_chat_participant":{"id":1215098445,"is_bot":true,"first_name":"MediaFlamengoRawBot","username":"MediaFlamengoRawBot"},"new_chat_member":{"id":1215098445,"is_bot":true,"first_name":"MediaFlamengoRawBot","username":"MediaFlamengoRawBot"},"new_chat_members":[{"id":1215098445,"is_bot":true,"first_name":"MediaFlamengoRawBot","username":"MediaFlamengoRawBot"}]}}]}
  1. 电报群chat_id可以从上面的消息中提取 "chat":{"id":-1001202656383,"title"
于 2020-04-21T08:10:12.027 回答
4

我现在测试了 4 小时,但它在 2021 年无法使用 group-chat-id。一直错误 {"ok":true,"result":[]}

但现在我找到了解决方案:

1:)安装“Plus Messenger”(https://play.google.com/store/apps/details?id=org.telegram.plus

2 :)进入群组 => 现在点击头部中的“群组名称” => 现在双击群组的标题。信息即将发布:ID123456789 已复制到剪贴板

3 :)在组中粘贴剪贴板文本。这是你的地面 ID

4 :)看起来像 1068773197,对于机器人来说是 -1001068773197(带有 -100 前缀)!!!

顺便说一句,您也可以在个人资料上看到用户 ID。

5 :)现在转到 Web 浏览器并发送此行(测试消息):

https://api.telegram.org/botAPITOKENNUMBER:APITOKENKEYHERE/sendmessage?chat_id=-100GROUPNUMBER&text=test

编辑 API Token 和 Group-ID

于 2021-01-04T09:51:27.837 回答
2

/start您可以通过向机器人发送消息来获取您的 IDuserinfobot

注意:一旦你在电报中搜索 userinfobot,你会得到很多回复。确保你选择带@bot标签的

于 2021-05-11T01:47:19.173 回答
1

恕我直言,最好的方法是使用 TeleThon,但鉴于apadana答案已经过时且无法修复,我将在此处编写工作解决方案:

import os
import sys
from telethon import TelegramClient
from telethon.utils import get_display_name

import nest_asyncio
nest_asyncio.apply()

session_name = "<session_name>"
api_id = <api_id>
api_hash = "<api_hash>"
dialog_count = 10 # you may change this

if f"{session_name}.session" in os.listdir():
    os.remove(f"{session_name}.session")

client = TelegramClient(session_name, api_id, api_hash)

async def main():
    dialogs = await client.get_dialogs(dialog_count)
    for dialog in dialogs:
        print(get_display_name(dialog.entity), dialog.entity.id)

async with client:
    client.loop.run_until_complete(main())

此片段将为10您提供 Telegram 中的第一个聊天记录。

假设:

  • 你已经安装telethonnest_asyncio
  • 你有api_id并且api_hash来自my.telegram.org
于 2020-04-01T23:59:01.853 回答
0

我想指出非常具体的案例让我在它周围徘徊。

我有chat_id上述步骤的格式,如-1001379XXXXXX. 所以我只是假设真正的 id 是1001379XXXXXX,并将其以这种格式留给 grafana 管理页面。但实际上 id 将其-作为不可或缺的部分。如果确实需要与数字一起复制。

于 2021-06-04T04:30:02.150 回答
0

我不明白为什么最明显(也可能是最简单)的答案不在这里。

在编写机器人时,您可以通过以下三行简单的行获取 id:

bot.on('message', (msg) => {
  console.log(msg)
})

然后只需从控制台检查 groupId :D

由于您可能正在尝试查看 groupId 以便能够使用您的机器人向组发送消息,因此正确的答案可能是:

您不再使用 groupId。您使用以@ 为前缀的组名(带有https://t.me/careless_whisper的组名)。请记住,您的小组必须是公开的。来源:电报 API

因此,如果您的群组名称是 careless_whisper,收件人将是 @careless_whisper

于 2021-04-18T14:49:32.817 回答
-1

如果您正在实现您的机器人,请保持存储组名 -> id 表,并使用命令询问它。然后,您也可以按名称发送。

于 2020-07-17T10:02:02.597 回答