我一直在使用telegram_bot,并尝试获取群组聊天id以便向群组发送通知,但不知道需要使用哪些方法。
在机器人参与聊天时,我使用message.chat.id来获取聊天id,但是我不知道该使用哪些方法来获取群组聊天id。
我一直在使用telegram_bot,并尝试获取群组聊天id以便向群组发送通知,但不知道需要使用哪些方法。
在机器人参与聊天时,我使用message.chat.id来获取聊天id,但是我不知道该使用哪些方法来获取群组聊天id。
为了获取群聊ID,请按照以下步骤进行:
将Telegram机器人添加到群组中。
获取您的机器人的更新列表:
https://api.telegram.org/bot<YourBOTToken>/getUpdates
Ex:
例如:
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添加到组中时的响应示例。
使用“chat”对象的“id”发送消息。
(如果您是用机器人创建新组并且只收到 {"ok":true,"result":[]}
,请将机器人从组中删除并重新添加)
仅在图像argoprojlabs/argocd-notifications:v1.1.0
或更高版本中才支持私人对话。
getUpdates
请求返回{"ok":true,"result":[]}
。有什么想法怎么办?-更新:好的,将机器人从群组中移除,然后再次添加机器人可以解决此问题(还打印了在群组中的聊天ID)---看起来机器人不能在群组创建期间添加。 - rutsky在我挣扎了几个小时后,这是对我起作用的顺序:
假设机器人名字是 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"
如果你错过了第二步,你将无法更新你正在寻找的群组。而且如果有多个群组,你可以在响应中查找群组名称("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:进入你的群组,找到你的群链接(https://web.telegram.org/#/im?p=g154513121)
3:复制g后面的数字,在它之前加上一个减号-154513121
4:发送消息到群组
bot.sendMessage(-154513121, "Hi")
我现在已经测试过了,像魅力一样运作。
@getidsbot
可以阅读频道中的所有消息。他们尚未为其启用隐私设置。 - lindhe我发现的最简单的方法, 只使用telegram-web:
群聊ID:-xxxxxxxxxx
频道聊天ID:-100xxxxxxxxxx
(对于某些渠道/组,您需要添加-100前缀)
编辑: 在某些情况下,单击群组名称时在浏览器地址栏中显示ID
您可以通过以下方式获取聊天ID。
与您的机器人进行私密聊天,发送一条随机消息。稍后您将搜索此消息。
从bot_father获取您的API-token:XXXXXXXXX:YYYYYYY-YYYYYYYYYYYYYYYYY_YY
然后,在您的浏览器上使用该URL发出请求:
https://api.telegram.org/botXXXXXXXXX:YYYYYYY-YYYYYYYYYYYYYYYYY_YY/getUpdates
请求会返回一个JSON响应,在JSON文本中搜索你的随机消息
,并获取该对象中的聊天ID。
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))
你可能希望向你的群组发送一条消息,这样该群组就会出现在列表的顶部。
message.chat.id
的形式出现,通常是负数,而正常聊天则为正数。我对错误 {"ok":true,"result":[]} 的第二个解决方案:
@getidsbot
/start@getidsbot
https://api.telegram.org/botAPITOKENNUMBER:APITOKENKEYHERE/sendmessage?chat_id=-100GROUPNUMBER&text=test
编辑 API 令牌和群组 ID!