← Вернуться к списку тем

Очистка экрана

Здравствуйте,
подскажите, пожалуйста,

? как можно очистить экран от всех сообщений,
чтобы каждое сообщение было на чистом экране

Ответы


  • iMakeBots [20.08.2020 в 12:27 → Игорь Next]
    Можете попробовать записывать id каждого сообщения и при отправке нового сообщения удалять по id предыдущие.
  • Игорь Next [14.09.2020 в 17:47 → iMakeBots]
    Здравствуйте,

    пробовал так делать - удаляет. но только если это сообщение последнее,
    а если на экране отображено больше 1 сообщения, то удаление не последнего не происходит

    ? подскажите решение

     $this->botApiQuery("deleteMessage", [
                    "chat_id" => $this->getChatId(),
                    "message_id" => 8245
                ]
            );
  • iMakeBots [14.09.2020 в 17:50 → Игорь Next]
    Если у вас есть id тех сообщений, которые вы хотите удалить (если у бота на это есть права), то вы можете положить все id в массив и далее циклом обойти массив и вызвать метод deleteMessage подставляя значение в message_id
  • Игорь Next [14.09.2020 в 17:56 → iMakeBots]
    id всех сообщений есть,
    а вот по поводу прав бота можете поподробнее рассказать?
  • iMakeBots [14.09.2020 в 17:59 → Игорь Next]
    Посмотрите, на оф сайте указаны вот такие ограничения

    deleteMessage
    Use this method to delete a message, including service messages, with the following limitations:
    - A message can only be deleted if it was sent less than 48 hours ago.
    - A dice message in a private chat can only be deleted if it was sent more than 24 hours ago.
    - Bots can delete outgoing messages in private chats, groups, and supergroups.
    - Bots can delete incoming messages in private chats.
    - Bots granted can_post_messages permissions can delete outgoing messages in channels.
    - If the bot is an administrator of a group, it can delete any message there.
    - If the bot has can_delete_messages permission in a supergroup or a channel, it can delete any message there.
    Returns True on success.
  • Игорь Next [14.09.2020 в 18:35 → iMakeBots]
    тут написано что бот может удалять сообщения в приватном чате
    (- Bots can delete incoming messages in private chats.)

    у меня тип чата стоит [type] => private
    а бот может удалить только последнее сообщение (

    может нужно установить боту права администратора
    ? подскажите, как

    нашел только установку названия администратора,
    setChatAdministratorCustomTitle

    а вот установку самого администратора в чате пока нет ((
  • Игорь Next [15.09.2020 в 05:43 → iMakeBots]
    пробовал сделать удаление выбранных сообщений в коде вашего бот-магазина
    (https://imakebots.ru/files/articles/chat-bot-magazin-part-4/bot_shop_4_31.zip)

    так же удаляет только последнее сообщение,
    а если задать предыдущее, то удаления не происходит
    
    $this->botApiQuery("deleteMessage", ['chat_id' => $this->admin, 'message_id' =>8035]); 
    

    в описании API бота нашел параметр чата (object Chat)
    all_members_are_administrators (True, если все участники чата являются администраторами),

    но задать его пока не получается

    ? можете подсказать,
    как задать этот параметр all_members_are_administrators


    читал про метод getUpdates чтобы видеть новые,
    но пока не получается передать ему параметр offset - подскажите как ?
  • iMakeBots [15.09.2020 в 18:10 → iMakeBots]
    all_members_are_administrators это для группы - для приватного чата это не будет работать

    offset - вы должны указывать на единицу больше самого последнего update_id, которые вы получили ранее
    Identifier of the first update to be returned. Must be greater by one than the highest among the identifiers of previously received updates. By default, updates starting with the earliest unconfirmed update are returned. An update is considered confirmed as soon as getUpdates is called with an offset higher than its update_id. The negative offset can be specified to retrieve updates starting from -offset update from the end of the updates queue. All previous updates will forgotten.