Задать вопрос
@r1dddy4sv

Отправка сообщений TelegramBotAPI по таймеру, сохраняя прием сообщений?

У меня есть обычный бот, принимающий сообщения и отвечающий на них, но одна из функций бота - это отправка сообщения в определенное время, устанавливаемое пользователем.
Так вот, я без понятия как это сделать, вся проблема в необходимости постоянно поддерживать привычную работу бота, так же каждый пользователь может создавать несколько таких сообщений

Я пользуюсь mysql на heroku, вот как я пытался решить эту задачу:
g=datetime(year=int(message.text[0:4]), day=int(message.text[5:7]), month=int(message.text[8:10]),hour=int(message.text[11:13]), minute=int(message.text[14:16]),second=0 , tzinfo=pytz.timezone('Europe/Moscow'))
        try:
            conn = create_connection_mysql_db('***', 
                                            '***', 
                                            '***',
                                            '***')
            cursor = conn.cursor()
            cursor.execute(f'''UPDATE posts SET time = '{message.text}' WHERE id ={int(message.chat.id)}''')

            create_table_query = f'''SELECT post FROM posts WHERE id ={int(message.chat.id)} AND time = "{message.text}"'''
            cursor.execute(create_table_query)
            query_result = cursor.fetchall()
            f=',,, '.join(str(x) for x in query_result)
            conn.commit()
        except Error as error:
            print(error)
        finally:
            cursor.close()
            conn.close() 
        try:
            conn = create_connection_mysql_db('***', 
                                            '***', 
                                            '***',
                                            '***')
            cursor = conn.cursor()
            create_table_query = f'''
                                UPDATE alls
                                SET state = 'gl'
                                WHERE id = {message.chat.id};'''
            cursor.execute(create_table_query)
            conn.commit()
        except Error as error:
            print(error)
        finally:
            cursor.close()
            conn.close() 
        bot.send_message(message.chat.id,'Хорошо, отправлю тебе сообщение в установленное время!')

        for p in f.split(',,, '):
            t=False
            while t==False:
                if g < pytz.utc.localize(datetime.utcnow()).astimezone(pytz.timezone('Europe/Moscow')):
                    bot.send_message(message.chat.id,p[2:-3])
                    try:
                        conn = create_connection_mysql_db('***', 
                                                        '***', 
                                                        '***',
                                                        '***')
                        cursor = conn.cursor()
                        create_table_query = f'''DELETE FROM posts WHERE id = {int(message.chat.id)} AND post = "{p[2:-3]}"'''
                        cursor.execute(create_table_query)
                        conn.commit()
                    except Error as error:
                        print(error)
                    finally:
                        cursor.close()
                        conn.close() 
                    t=True

Но все это работает не верно, и после двух сообщений по таймеру, бот перестает принимать сообщения вообще

Помогите
Сасибо!
  • Вопрос задан
  • 49 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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