Помогите с тг ботом

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]]
→ Ссылка
Автор решения: Nikita Silaev
  1. Обернём код начисляющий зарплаты в функцию paySalaries.

  2. Для реализации таймера запускающего функцию paySalaries воспользуемся библиотекой schedule (установка pip install schedule)

  3. Чтобы проверки исходящие от 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)
→ Ссылка