подскажите, что я тут делаю не так? Мне нужно чтобы цикл while останавливался после как юзер напишет сообщение боту, вот сам код http://skrinshoter.ru/s/030220/Fq43Ihye
Ой, ошибся, Stop пишу --- Сообщение объединено с предыдущим 3 фев 2020 Никак не реагирует, цикл дальше продолжается --- Сообщение объединено с предыдущим 3 фев 2020 Уже всю голову сломал, вообще понять не могу
Red1ay267, ну так ты сперва преобразуй "message.text" в текст с помощью "str()" :) => if str(message.text) == "Stop"
легче будет: running = True while running: bot.send_message(message.chat.id,"start") running = False # останавливаем цикл Код running = True while running: bot.send_message(message.chat.id,"start") running = False # останавливаем цикл
Я правильно понимаю что когда ты пишешь сообщение стоп то бот должен выключится ? Если да то так не будет никогда в данном коде. --- Сообщение объединено с предыдущим 3 фев 2020 Потому что в боте есть точка запуска. А твой цикл while ничего против неё не имеет)
ну так он останавливается) --- Сообщение объединено с предыдущим 3 фев 2020 Просто ты этого не заметишь)
А понял --- Сообщение объединено с предыдущим 3 фев 2020 Это так не работает скорее всего) --- Сообщение объединено с предыдущим 3 фев 2020 Дай полный код, хоть поиграюсь
У меня работает этот код. Он медленный, но возможно дело в моём пк. from threading import Thread from telebot import TeleBot def thread(my_func): def wrapper(*args, **kwargs): my_thread = Thread(target=my_func, args=args, kwargs=kwargs, daemon=True) my_thread.start() return wrapper bot = TeleBot("ToKeN", threaded = False) permissions = {} @thread def spam(chatId): while permissions[chatId]["canSendMessages"]: bot.send_message(chatId, "Start") permissions[chatId].update({"spamIsStopped": True}) @bot.message_handler(content_types=['text']) def answerer(message): if message.text == "/start": permissions.update({message.chat.id: {"canSendMessages": True, "spamIsStopped": False}}) spam(message.chat.id) elif message.text == "/stop": permissions[message.chat.id].update({"canSendMessages": False}) while not permissions[message.chat.id]["spamIsStopped"]: pass bot.send_message(message.chat.id, "Stop") if __name__ == '__main__': while True: bot.polling(none_stop=True, timeout=500) Код from threading import Thread from telebot import TeleBot def thread(my_func): def wrapper(*args, **kwargs): my_thread = Thread(target=my_func, args=args, kwargs=kwargs, daemon=True) my_thread.start() return wrapper bot = TeleBot("ToKeN", threaded = False) permissions = {} @thread def spam(chatId): while permissions[chatId]["canSendMessages"]: bot.send_message(chatId, "Start") permissions[chatId].update({"spamIsStopped": True}) @bot.message_handler(content_types=['text']) def answerer(message): if message.text == "/start": permissions.update({message.chat.id: {"canSendMessages": True, "spamIsStopped": False}}) spam(message.chat.id) elif message.text == "/stop": permissions[message.chat.id].update({"canSendMessages": False}) while not permissions[message.chat.id]["spamIsStopped"]: pass bot.send_message(message.chat.id, "Stop") if __name__ == '__main__': while True: bot.polling(none_stop=True, timeout=500) Вполне возможно что тут есть баги которые легко фиксятся) Так что не бейте тапками, мне лень дальше тестировать :)