我一直在使用telegram_bot,并尝试获取groupChat id来向群聊发送通知,但不知道我必须使用哪种方法。
为了获得聊天ID,当机器人参与聊天时,我会使用message.chat.id,但是我必须使用它来获取群组聊天ID,无法找到/
我一直在使用telegram_bot,并尝试获取groupChat id来向群聊发送通知,但不知道我必须使用哪种方法。
为了获得聊天ID,当机器人参与聊天时,我会使用message.chat.id,但是我必须使用它来获取群组聊天ID,无法找到/
Answers:
为了获得群聊ID,请执行以下操作:
将电报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”},“聊天”:{“ id” :,“标题“:”“},” date“:25497,” new_chat_participant“:{” id“:71,” first_name“:” NAME“,”用户名“:” YOUR_BOT_NAME“}}}
当您将BOT添加到组中时,这是响应的示例。
getUpdates
请求返回{"ok":true,"result":[]}
即使我尝试发送一束消息来通过组和提BOT @
和一些随机的“命令” /my_id
,/start
,/help
。有什么想法怎么办?-更新:确定,从群组中删除漫游器,然后重新添加漫游器,从而解决了该问题(它还在群组中打印了聊天ID)---好像无法在创建群组时添加漫游器。
这是在奋斗几个小时后为我工作的顺序:
假设机器人名称为my_bot。
1-将机器人添加到组中。
转到该组,单击组名,单击“添加成员”,在搜索框中搜索您的机器人,如下所示:@my_bot,选择您的机器人并单击“添加”。
2-向机器人发送虚拟消息。
您可以使用以下示例:(/my_id @my_bot
我尝试了一些消息,但并非所有消息都起作用。上面的示例很好用。也许消息应该以/开头)
3-转到以下网址: https://api.telegram.org/botXXX:YYYY/getUpdates
用您的机器人令牌替换XXX:YYYY
4-查找“聊天”:{“ id”:-zzzzzzzzzzzz,
-zzzzzzzzzzzz是您的聊天ID(带负号)。
5- 测试:您可以测试是否向卷曲的群组发送消息:
curl -X POST "https://api.telegram.org/botXXX:YYYY/sendMessage" -d "chat_id=-zzzzzzzzzz&text=my sample text"
如果您错过了第2步,那么您要查找的组将不会有任何更新。另外,如果有多个组,则可以在响应中查找组名(“ title”:“ group_name ”)。
希望这可以帮助。
/
like 开头/test something
使getUpdates高兴。
截至2020年3月,只需:
加入后,它将输出一个JSON文件,您的聊天ID将位于message.chat.id。
"message": {
"chat": {
"id": -210987654,
"title": ...,
"type": "group",
...
}
...
}
之后一定要从您的小组中踢出@RawDataBot。
2018年中之后:
1 :)邀请@getidsbo或@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:将您的消息发送给bot.sendMessage(-154513121, "Hi")
我现在测试过的Gorup
,像魅力一样工作
After mid-2018
方法。
您可以通过这种方式获取聊天ID。
与您的漫游器进行私人聊天时,随机发送一条消息。您稍后将搜索此消息。
从bot_father获取您的API令牌: XXXXXXXXX:YYYYYYY-YYYYYYYYYYYYYYYYY_YY
然后,在您的浏览器上使用该URL发出请求:
https://api.telegram.org/botXXXXXXXXX:YYYYYYY-YYYYYYYYYYYYYYYYY_YY/getUpdates
该请求返回一个json响应,在json文本中搜索your random message
并获取该对象中的聊天ID。
使用python和telethon可以很容易地获得聊天ID。该解决方案最适合使用电报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))
您可能想向群组发送一条消息,以便该群组出现在列表顶部。
您可以以相同的方式检索组ID。它在邮件正文中显示为message.chat.id
,通常是一个负数,正常的聊天是积极的。
只能从收到的消息中检索组ID和聊天ID,没有可用于检索活动组的呼叫等。接收消息时必须记住组ID并将其存储在缓存或类似内容中。
创建一个机器人,或者如果已经创建,则设置如下:
有权访问消息
显然,无论Telegram组有多老/多新:
再次将bot添加到群组
创建一个脚本文件并运行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"
希望对您有帮助(HTH)
bot收到以下消息,该消息源自具有bot并存的Telegram组:
根据需要提取数据
function doPost(e) {
var contents = JSON.parse(e.postData.contents);
// GmailApp.sendEmail(Session.getEffectiveUser().getEmail(), "Telegram Bot Update", JSON.stringify(contents, null, 4));
var chat_id = contents.message.chat.id;
var text = contents.message.text;
var name = contents.message.from.first_name + " " + contents.message.from.last_name;
var sResponse = telegramBotMachine( chat_id, text, name );
}
/ *内容
{
"update_id": 20383255,
"message": {
"message_id": 147,
"from": {
"id": 999999999,
"is_bot": false,
"first_name": "Trajano",
"last_name": "Roberto",
"username": "TrajanoRoberto",
"language_code": "en"
},
"chat": {
"id": -666666666,
"title": "Test Ataque Media Flamengo",
"type": "group",
"all_members_are_administrators": true
},
"date": 1585450075,
"text": "Menu"
}
}
恕我直言,要做到这一点的最好办法是使用募捐活动,但考虑到答案由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
您提供电报中的第一个聊天记录。
假设:
telethon
和nest_asyncio
安装api_id
并且api_hash
来自my.telegram.orgfunction doPost(e) {
var contents = JSON.parse(e.postData.contents);
// GmailApp.sendEmail(Session.getEffectiveUser().getEmail(), "Telegram Bot Update", JSON.stringify(contents, null, 4));
var chat_id = contents.message.chat.id;
var text = contents.message.text;
var name = contents.message.from.first_name + " " + contents.message.from.last_name;
var sResponse = telegramBotMachine( chat_id, text, name );
}
如果您要实现机器人,请保存一个组名-> id表,并使用命令询问它。然后,您也可以按姓名发送。