我一直在使用telegram_bot,并试图获得groupChat id发送通知到组聊天,但不知道我必须使用哪些方法。
为了获得聊天id,当机器人参与聊天时,我使用message.chat.id,但我必须使用它来获得组聊天id,无法找到/
我一直在使用telegram_bot,并试图获得groupChat id发送通知到组聊天,但不知道我必须使用哪些方法。
为了获得聊天id,当机器人参与聊天时,我使用message.chat.id,但我必须使用它来获得组聊天id,无法找到/
当前回答
依我看,最好的办法是使用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())
这个片段将为您提供Telegram中的前10次聊天。
假设:
您已经安装了telethon和nest_asyncio 你有来自my.telegram.org的api_id和api_hash
其他回答
使用python和telethon,很容易获得聊天id。这个解决方案最适合那些使用电报API的人。
如果你没有电视马拉松,运行这个:
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))
您可能希望向您的群组发送消息,以便该群组显示在列表顶部。
在我挣扎了几个小时后,下面是对我有用的顺序:
假设机器人名称为my_bot。
1-将机器人加入群组。 进入群组,点击群组名称,点击添加成员,在搜索框中像这样搜索你的bot: @my_bot,选择你的bot,点击添加。
2-发送一个虚拟消息给机器人。您可以使用以下示例:/my_id @my_bot (我试了一些消息,不是所有的消息都有效。上面的例子工作得很好。也许这条信息应该以/开头。
3-访问以下url: https://api.telegram.org/botXXX:YYYY/getUpdates 用你的bot令牌替换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")。
function adminCheck( chat_id, name ) {
var bAdminCheck = false;
var contents = JSON.parse( getAdmin( chat_id ) );
var i = 0;
while( !bAdminCheck && (i < contents.result.length ) ) {
if( name == (contents.result[i].user.first_name + " " + contents.result[i].user.last_name) ) {
bAdminCheck = true;
}
i++;
}
return bAdminCheck;
}
我对错误的第二个解决方案{"ok":true,"result":[]}
加入你的电报群 添加新用户(邀请) 搜索“getidsbot”=> @getidsbot 消息:/ start@getidsbot 现在您看到了ID。看起来像1068773197,对于bot来说是-1001068773197(前缀是-100)!! 把机器人踢出群组。 现在转到web浏览器,发送这一行(测试消息):
https://api.telegram.org/botAPITOKENNUMBER:APITOKENKEYHERE/sendmessage?chat_id=-100GROUPNUMBER&text=test
编辑API令牌和Group-ID!
您可以通过向bot userinfobot发送/start消息来获得您的id
注意:一旦你在telegram中搜索userinfobot,你会得到很多回复。 确保你选择了带有@bot标签的那个