Загрузка...

Вопрос по Python

Тема в разделе Python создана пользователем drake$ 3 фев 2020. 279 просмотров

  1. drake$
    drake$ Автор темы 3 фев 2020 Заблокирован(а) 37 6 сен 2019
    подскажите, что я тут делаю не так? Мне нужно чтобы цикл while останавливался после как юзер напишет сообщение боту, вот сам код

    http://skrinshoter.ru/s/030220/Fq43Ihye
     
  2. Red1ay267
    Red1ay267 3 фев 2020 5 12 май 2019
    А в чем заключается проблема?
     
  3. drake$
    drake$ Автор темы 3 фев 2020 Заблокирован(а) 37 6 сен 2019
    Цикл не останавливается когда пишу сообщение End
     
  4. sesu
    sesu 3 фев 2020 Ты не умеешь писать код 114 17 ноя 2019
    Так у тебя иф с Stop
     
  5. toxicity
    toxicity 3 фев 2020 токсик 467 9 сен 2018
    Так у тебя иф стоит на Stop
     
  6. drake$
    drake$ Автор темы 3 фев 2020 Заблокирован(а) 37 6 сен 2019
    Ой, ошибся, Stop пишу
    --- Сообщение объединено с предыдущим 3 фев 2020
    Никак не реагирует, цикл дальше продолжается
    --- Сообщение объединено с предыдущим 3 фев 2020
    Уже всю голову сломал, вообще понять не могу
     
  7. fifty59nine
    fifty59nine 3 фев 2020 3 11 май 2019
    Пройдись дебагером и узнай как он реагирует на стоп
     
  8. ArtemDav1337
    ArtemDav1337 3 фев 2020 Питон цэ май лайф 19 23 сен 2018
    Red1ay267, ну так ты сперва преобразуй "message.text" в текст с помощью "str()" :)
    => if str(message.text) == "Stop"
     
  9. Delitel
    Delitel 3 фев 2020 198 4 фев 2018
    легче будет:
    Код


    running = True
    while running:
    bot.send_message(message.chat.id,"start")
    running = False # останавливаем цикл
     
  10. ArtemDav1337
    ArtemDav1337 3 фев 2020 Питон цэ май лайф 19 23 сен 2018
    Лол, зачем?
     
  11. Ternick
    Ternick 3 фев 2020 ХОЧУ СПАТЬ || МАЙНИНГ РОЗЫГРЫШЕЙ 101% =) 403 6 апр 2017
    Я правильно понимаю что когда ты пишешь сообщение стоп то бот должен выключится ? Если да то так не будет никогда в данном коде.
    --- Сообщение объединено с предыдущим 3 фев 2020
    Потому что в боте есть точка запуска. А твой цикл while ничего против неё не имеет)
     
  12. ArtemDav1337
    ArtemDav1337 3 фев 2020 Питон цэ май лайф 19 23 сен 2018
    внимательней читай: "чтобы ЦИКЛ while ОСТАНАВЛИВАЛСЯ"
     
  13. Ternick
    Ternick 3 фев 2020 ХОЧУ СПАТЬ || МАЙНИНГ РОЗЫГРЫШЕЙ 101% =) 403 6 апр 2017
    ну так он останавливается)
    --- Сообщение объединено с предыдущим 3 фев 2020
    Просто ты этого не заметишь)
     
  14. ArtemDav1337
    ArtemDav1337 3 фев 2020 Питон цэ май лайф 19 23 сен 2018
    ну вот и задача решена:)
     
  15. Ternick
    Ternick 3 фев 2020 ХОЧУ СПАТЬ || МАЙНИНГ РОЗЫГРЫШЕЙ 101% =) 403 6 апр 2017
    А понял
    --- Сообщение объединено с предыдущим 3 фев 2020
    Это так не работает скорее всего)
    --- Сообщение объединено с предыдущим 3 фев 2020
    Дай полный код, хоть поиграюсь
     
  16. ArtemDav1337
    ArtemDav1337 3 фев 2020 Питон цэ май лайф 19 23 сен 2018
    У меня откуда полный код? Я не создатель темы :d
     
  17. Ternick
    Ternick 3 фев 2020 ХОЧУ СПАТЬ || МАЙНИНГ РОЗЫГРЫШЕЙ 101% =) 403 6 апр 2017
    У меня работает этот код.
    Он медленный, но возможно дело в моём пк.
    Код

    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)
    Вполне возможно что тут есть баги которые легко фиксятся)
    Так что не бейте тапками, мне лень дальше тестировать :)
     
Загрузка...
Top