@EVG82

Что то не то в скрипте?

вот код для блокирывания сообщений со стоп словами

Import telebot

token = '5'
bot = telebot.TeleBot(token)
GROUP_ID = "@bt"
inputfile = '1.txt'
f = open(inputfile, mode='r', encoding='utf-8')
blacklist = list(map(str.strip, f.readlines()))

@bot.message_handler(content_types=["text"])
def handle_text(message):
for x in blacklist:
if (x in message.text):
bot.delete_message(message.chat.id, message.message_id)
else:
pass


if __name__ == "__main__":
bot.infinity_polling()


но работает так, что когда добавляешь новое СТОП слово в словарь скрипт не цепляет его.
перезагрузка запуск скрипта - решение.

но это геморно.

подскажите вариант выхода из ситуации?
Где то читал (не могу найти) про объявление глобальной переменной
я так понял вот эта f = и к ней нужно обращаться постоянно? зациклить как то?
или как?

может кто подскажет кусочек кода?
чую что где то рядом но не пойму пока как
  • Вопрос задан
  • 104 просмотра
Решения вопроса 1
SoreMix
@SoreMix Куратор тега Python
yellow
Читайте файл и составляйте новый список слов каждый раз в обработчике сообщений
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Vindicar
@Vindicar
RTFM!
Перечитывать файл каждый раз при обработке сообщения - не лучшая идея.

Вместо этого сделай отдельную команду, которая будет его перечитывать.
blacklist = []
def load_stoplist():
    global blacklist #чтобы можно было изменить глобальную переменную
    inputfile = '1.txt'
    # учись как правильно работать с файлами
    with open(inputfile, mode='r', encoding='utf-8') as f:
        blacklist = list(map(str.strip, f.readlines()))

@bot.message_handler(commands=['reload'])
def reload_blacklist(message):
    #тут имеет смысл вставить проверку, чтобы бот игнорировал эту команду от других юзеров
    load_stoplist()

#ну и так далее. А в конце скрипта
if __name__ == "__main__":
    load_stoplist()
    bot.infinity_polling()
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы