бот, разработанный в telebot, работает в личном сообщении, но не в группе - PullRequest
0 голосов
/ 28 апреля 2019

мой бот, созданный в telebot, не будет работать в группе, предполагается, что он обнаружит «плохое слово» и удалит сообщение, но не будет работать.

Я пытался заставить его работать на приватном messege, и он сделал

ожидается: удалить сообщения, содержащие слово из списка, и ответить сообщением.

результат: делать это только в личных сообщениях, не входящих в группу: (


import telebot
import time


bot_token = 'TOKEN'
bot = telebot.TeleBot(token=bot_token)


bw = ['poop']

def has_curse(msgr):
    b = False

    for i in range(len(bw)):
        if bw[i] in msgr:
            b = True
            break
    return b



@bot.message_handler(func = lambda msg: msg.text is not None)
def at_answer(message):
    if has_curse(message.text):
        bot.reply_to(message,'your message has been deleted')
        bot.delete_message(message.chat.id, message.message_id)

while True:
    try:
        bot.polling()
    except Exception:
        time.sleep(15)

1 Ответ

0 голосов
/ 30 апреля 2019

Боты запускаются по умолчанию в режиме конфиденциальности . Как указано в документации

Бот, работающий в режиме конфиденциальности, не будет получать все сообщения, которые люди отправляют в группу. Вместо этого он получит только:

  • Сообщения, начинающиеся с косой черты ‘/’
  • Ответы на собственные сообщения бота
  • Служебные сообщения (добавленные или удаленные из группы и т. Д.)
  • Сообщения от каналов, в которых он участвует

Так что, если ваш бот вообще не получает обновления, это причина.

Поскольку ваш бот должен сканировать каждое сообщение, отправленное в группе, единственный способ заставить его работать, это отключить режим конфиденциальности.

...