我一直在使用telegram_bot,并试图让 groupChat id 向群聊发送通知,但不知道我必须使用哪些方法。
当机器人参与聊天时,我使用 message.chat.id 获取聊天 id,但我必须使用它来获取群聊 id 找不到/
我一直在使用telegram_bot,并试图让 groupChat id 向群聊发送通知,但不知道我必须使用哪些方法。
当机器人参与聊天时,我使用 message.chat.id 获取聊天 id,但我必须使用它来获取群聊 id 找不到/
要获取群聊 id,请执行以下操作:
将 Telegram BOT 添加到组中。
获取 BOT 的更新列表:
https://api.telegram.org/bot<YourBOTToken>/getUpdates
前任:
https://api.telegram.org/bot123456789:jbd78sadvbdy63d37gda37bd8/getUpdates
寻找“聊天”对象:
{"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 添加到组时的响应示例。
使用“聊天”对象的“id”发送消息。
(如果您使用机器人创建了新组,并且您只获得{"ok":true,"result":[]}
、删除并再次将机器人添加到组中)
私人图表仅适用于图像argoprojlabs/argocd-notifications:v1.1.0
或以上。
在挣扎了几个小时后,这是对我有用的序列:
假设机器人名称是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 ”)。
希望这可以帮助。
截至 2021 年 5 月,只需:
加入后,它将输出一个 JSON 文件,您的聊天 ID将位于message.chat.id中。
"message": {
"chat": {
"id": -210987654,
"title": ...,
"type": "group",
...
}
...
}
之后一定要从你的小组中踢出@RawDataBot。
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")
我现在测试并像魅力一样工作
您可以通过这种方式获取聊天 ID。
在与您的机器人进行私人聊天时,发送一条随机消息。稍后您将搜索此消息。
从 bot_father 获取您的 API 令牌:XXXXXXXXX:YYYYYYY-YYYYYYYYYYYYYYYYY_YY
然后,在您的浏览器上使用该 url 发出请求:
https://api.telegram.org/botXXXXXXXXX:YYYYYYY-YYYYYYYYYYYYYYYYY_YY/getUpdates
该请求返回一个 json 响应,在 json 文本中搜索您random message
并获取该对象中的聊天 ID。
我发现仅使用电报网络的最简单方法:
群聊ID:-xxxxxxxxxx
频道聊天ID:-100xxxxxxxxxx
(对于某些频道/组,您需要添加 -100 前缀)
编辑:在某些情况下,当您单击组名时,ID 会显示在浏览器地址栏中
使用 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))
您可能希望向您的群组发送消息,以便群组显示在列表顶部。
您可以用相同的方式检索组 ID。它出现在消息正文中message.chat.id
,通常为负数,正常聊天为正数。
组 ID 和聊天 ID 只能从收到的消息中检索,没有可用于检索活动组的调用等。当您收到消息并将其存储在缓存或类似的东西中时,您必须记住组 ID。
我对错误 {"ok":true,"result":[]} 的第二个解决方案
@getidsbot
/start@getidsbot
https://api.telegram.org/botAPITOKENNUMBER:APITOKENKEYHERE/sendmessage?chat_id=-100GROUPNUMBER&text=test
编辑 API 令牌和组 ID!
创建一个机器人,或者如果已经创建了如下设置:
有权访问消息
显然,无论 Telegram 组的新旧程度如何:
将机器人添加到组
从组中删除机器人
再次将机器人添加到组
创建脚本文件并运行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());
}
[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"}]}}]}
"chat":{"id":-1001202656383,"title"
我现在测试了 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!
/start
您可以通过向机器人发送消息来获取您的 IDuserinfobot
注意:一旦你在电报中搜索 userinfobot,你会得到很多回复。确保你选择带
@bot
标签的
恕我直言,最好的方法是使用 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 中的第一个聊天记录。
假设:
telethon
了nest_asyncio
api_id
并且api_hash
来自my.telegram.org我想指出非常具体的案例让我在它周围徘徊。
我有chat_id
上述步骤的格式,如-1001379XXXXXX
. 所以我只是假设真正的 id 是1001379XXXXXX
,并将其以这种格式留给 grafana 管理页面。但实际上 id 将其-
作为不可或缺的部分。如果确实需要与数字一起复制。
我不明白为什么最明显(也可能是最简单)的答案不在这里。
在编写机器人时,您可以通过以下三行简单的行获取 id:
bot.on('message', (msg) => {
console.log(msg)
})
然后只需从控制台检查 groupId :D
由于您可能正在尝试查看 groupId 以便能够使用您的机器人向组发送消息,因此正确的答案可能是:
您不再使用 groupId。您使用以@ 为前缀的组名(带有https://t.me/careless_whisper的组名)。请记住,您的小组必须是公开的。来源:电报 API
因此,如果您的群组名称是 careless_whisper,收件人将是 @careless_whisper
如果您正在实现您的机器人,请保持存储组名 -> id 表,并使用命令询问它。然后,您也可以按名称发送。