Помогите с тг ботом
sqlite_select_query = """SELECT * from test"""
cursor.execute(sqlite_select_query)
records = cursor.fetchall()
for row in records:
if row[8] == 'Малый бизнес':
amount = 5000
sqlite_update_query = """UPDATE test SET balance = balance + ?"""
cursor.execute(sqlite_update_query, (amount,))
conn.commit()
sqlite_select_query = """SELECT * from test"""
cursor.execute(sqlite_select_query)
records = cursor.fetchall()
for row in records:
bot.send_message(message.chat.id, f"<em>Банк</em>?\n\nПришла зарплата с Вашего бизнеса: {amount}руб?\n\nТекущий баланс: {row[5]}руб ?", reply_markup=markup3, parse_mode='html')
sleep(3600)
как сделать, чтобы если у тебя есть какой то бизнес то тебе приходило определенное количество денег в час (Малый бизнес - 5к/час, Средний бизнес - 7к/час, Большой бизнес - 10к/час) вместе с сообщением от бота
Ответы (2 шт):
Я не особо понял, где именно у тебя хранится значение бизнеса (допустим, что в row[8]). Первым делом убираем условие
if row[8] == 'Малый бизнес':
Теперь создаём словарь, где тип бизнеса будет ассоциироваться с суммой оплаты:
amounts = {
'Малый бизнес': 5000,
'Средний бизнес': 7000,
'Большой бизнес': 10000
}
Таким образом например amounts['Средний бизнес'] вернёт 5000
А значит мы можем просто заменить
amount = 5000
на
amount = amounts[row[8]]
Обернём код начисляющий зарплаты в функцию
paySalaries.Для реализации таймера запускающего функцию
paySalariesвоспользуемся библиотекойschedule(установкаpip install schedule)Чтобы проверки исходящие от
scheduleне ставили в очередь выполнение остального кода, запустим его в отдельном потоке через встроенную библиотекуthreading.
import schedule
import threading
def paySalaries():
business_salaries = {
'Малый бизнес': 5000,
'Средний бизнес': 7000,
'Большой бизнес': 10_000,
}
records = cursor.execute("""SELECT * from test""").fetchall()
for row in records:
business_type = row[8]
amount = business_salaries[business_type]
sqlite_update_query = """UPDATE test SET balance = balance + ?"""
cursor.execute(sqlite_update_query, (amount,))
conn.commit()
bot.send_message(
message.chat.id,
f"<em>Банк</em>?\n\nПришла зарплата с Вашего бизнеса: {amount}руб?\n\nТекущий баланс: {row[5]}руб ?",
reply_markup=markup3, parse_mode='html'
)
# запуск функции каждый час
schedule.every().hour.do(paySalaries)
if __name__ == '__main__':
threading.Thread(target=bot.infinity_polling, name='bot_infinity_polling', daemon=True).start()
while True:
schedule.run_pending()
time.sleep(1)