У меня есть обычный бот, принимающий сообщения и отвечающий на них, но одна из функций бота - это отправка сообщения в определенное время, устанавливаемое пользователем.
Так вот, я без понятия как это сделать, вся проблема в необходимости постоянно поддерживать привычную работу бота, так же каждый пользователь может создавать несколько таких сообщений
Я пользуюсь 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
Но все это работает не верно, и после двух сообщений по таймеру, бот перестает принимать сообщения вообще
Помогите
Сасибо!