【问题标题】:Deleting all messages of telegram group by bot通过机器人删除电报组的所有消息
【发布时间】:2020-08-07 01:43:08
【问题描述】:

我想删除群组中的消息,但机器人只删除最后几条消息,大约是最后十分钟。
我正在使用 message_id 递减来做到这一点

$lastMessageID = --$result ['message']['message_id'];
        for ($i=0; $i <$n ; $i++) { 
            $content = array('chat_id' => $chat_id, 'message_id' => $lastMessageID);
            $telegram->deleteMessage($content);
            $lastMessageID--;
        }   

我已经检查了删除命令的返回值,一切都很好我收到了{"ok":1,"result":1},当然对于某些消息,它有 “找不到要删除的消息”,它会继续,但是突然它就停止了,没有错误。例如,最后一个返回值为{"ok":1,"result":1} 或在某些情况下为{ok:1},并且不会删除更多消息。
我考虑过以下问题:

  1. 只有在 48 小时内发送的邮件才能被删除。
  2. bot 是组管理员一年
  3. 机器人拥有所有权限

【问题讨论】:

    标签: php telegram telegram-bot php-telegram-bot


    【解决方案1】:

    正如官方文档https://core.telegram.org/bots/api#deleteMessage Telegram 页面上已经提到的那样,A message can only be deleted if it was sent less than 48 hours ago.

    【讨论】:

    • 我在问题中提到过我已经考虑过这一点。
    • @Amir,如果你知道了那现在有什么意义,兄弟?
    • 是的,这是我的问题,为什么会这样?我已经提到机器人只删除大约前十分钟发送的消息,而不是 48 小时
    • 我认为是因为您的 API 调用速度如此之快。您应该考虑在每个请求之前添加一些延迟。此外,不要使用递减值逻辑,而是使用适当的 API 端点获取所有消息的列表并传递现有的消息 ID,而不是传递模糊/不存在的消息 ID。
    猜你喜欢
    • 2017-02-27
    • 2019-12-31
    • 1970-01-01
    • 2021-04-21
    • 2019-03-06
    • 1970-01-01
    • 1970-01-01
    • 2020-11-10
    • 2016-05-03
    相关资源
    最近更新 更多