Telegram 电报机器人-如何获取群组聊天id?

Telegram 电报机器人-如何获取群组聊天id?,telegram,telegram-bot,Telegram,Telegram Bot,我一直在使用,并试图让groupChat id向groupChat发送通知,但不知道我必须使用哪些方法 对于获取聊天id,当bot参与聊天时,我使用message.chat.id获取聊天id,但我必须使用它获取群组聊天id,但找不到该id/您可以使用相同的方法获取群组id。它在消息正文中显示为message.chat.id,通常为负数,正常聊天为正数 组ID和聊天ID只能从收到的消息中检索,没有可用于检索活动组等的呼叫。您必须在收到消息时记住组ID,并将其存储在缓存或类似内容中。要获取组聊天ID

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


对于获取聊天id,当bot参与聊天时,我使用message.chat.id获取聊天id,但我必须使用它获取群组聊天id,但找不到该id/

您可以使用相同的方法获取群组id。它在消息正文中显示为
message.chat.id
,通常为负数,正常聊天为正数


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

要获取组聊天ID,请执行以下操作:

  • 将电报机器人添加到组中

  • 获取您的机器人的更新列表:

     https://api.telegram.org/bot<YourBOTToken>/getUpdates
    
  • 查找“聊天”对象:

  • {“更新id”:8393,“消息”:{“消息id”:3,“发件人”:{“id”:7474,“名字”:“AAA”},“聊天室”:{“id”:,“标题”:“}”,日期:25497,“新聊天室参与者”:{“id”:71,“名字”:“姓名”,“用户名”:“您的聊天室名称”}

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

  • 使用“聊天”对象的“id”发送消息

  • (如果您使用bot创建了新组,并且只得到
    {“ok”:true,“result”:[]}
    ,请删除bot并将其再次添加到组中)


  • 在挣扎了几个小时后,我的工作顺序如下:

    假设bot名称为my\u bot

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

    2-向bot发送虚拟消息。
    您可以使用以下示例:
    /my\u id@my\u bot

    (我尝试了一些消息,但不是所有的消息都有效。上面的示例很好。也许消息应该以/)

    3-转到以下url:
    https://api.telegram.org/botXXX:YYYY/getUpdates

    用您的机器人令牌替换XXX:YYYY

    4-查找“聊天”:{“id”:-zzzzzzzz,
    -zzzzzzzz是您的聊天id(带负号)

    5-测试:您可以使用以下命令测试向组发送消息:

    curl -X POST "https://api.telegram.org/botXXX:YYYY/sendMessage" -d "chat_id=-zzzzzzzzzz&text=my sample text"
    
    如果您错过了步骤2,将不会更新您正在查找的组。此外,如果有多个组,您可以在响应(“title”:“group\u name”)中查找组名


    希望这有帮助。

    使用python和telethon,很容易获得聊天id。此解决方案最适合使用TelegramAPI的用户

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

    pip install telethon
    
    如果您没有使用telegram注册的应用程序,请注册一个: 链接如下:

    然后运行以下代码:

    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))
    

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

    自2021年5月起,只需:

    • 邀请@RawDataBot加入您的团队
    加入后,它将输出一个JSON文件,您的聊天id将位于message.chat.id

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

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

    你可以通过这种方式获得聊天ID

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

    从bot_父节点获取API令牌:
    xxxxxxxx:yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy

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

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

    请求返回一个json响应,在json文本中搜索您的
    随机消息
    ,并获取该对象中的聊天id。

    2018年年中之后:
    1:)邀请或
    @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:)使用非官方的Messenger,如,并在群组/频道信息中查看您的群组id

    2018年年中之前:(不要使用)
    1:Goto()
    2:转到Gorup并找到Gorup()的链接
    3:将该数字复制到g后面,并在其前面加上一个(-)
    -15451321

    4:将您的消息发送给Gorup
    bot.sendMessage(-15451321,“Hi”)


    我现在进行了测试,工作起来很有魅力。我认为最好的方法是使用TeleThon,但鉴于by已经过时,无法修复,我将在这里编写工作解决方案:

    导入操作系统
    导入系统
    从telethon导入电报客户端
    从telethon.utils导入获取\u显示\u名称
    导入嵌套异步
    nest_asyncio.apply()
    session_name=“”
    api_id=
    
    创建一个机器人,或者如果已经创建,则设置如下:

    有权访问消息

    显然,不管电报组有多旧/多新:

  • 将bot添加到组中

  • 从组中删除bot

  • 再次将bot添加到组中

  • 创建脚本文件并运行
    getUpdates
    方法 例如:

  • var vApiTokenTelegram=“1234567890:?>yg5GeL5PuItAOEhvdcPPELAOCCy3jBo”/@@@Bot-API令牌
    var vUrlTelegram=”https://api.telegram.org/bot“+vApiTokenTelegram;
    函数getUpdates(){
    var response=UrlFetchApp.fetch(vUrlTelegram+“/getUpdates”);
    log(response.getContentText());
    }
    
  • 功能应将以下信息记录到控制台:
  • 可以从上述消息中提取电报组聊天室id
    “chat”:{“id”:-1001202656383,“title”

  • 如果您正在实现bot,请保存一个group name->id表,并用命令询问。然后您也可以按名称发送。

    我现在测试了4h,但2021年group-chat-id不起作用。始终出现错误{“ok”:true,“result”:[]}

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

    1:)安装“Plus Messenger”()

    2:)进入组=>点击否
    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
    
    [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"}]}}]}
    
    https://api.telegram.org/botAPITOKENNUMBER:APITOKENKEYHERE/sendmessage?chat_id=-100GROUPNUMBER&text=test
    
    https://api.telegram.org/botAPITOKENNUMBER:APITOKENKEYHERE/sendmessage?chat_id=-100GROUPNUMBER&text=test
    bot.on('message', (msg) => {
      console.log(msg)
    })