Error code: 429. Description: Too Many Requests: retry after 11
Как избавиться от этой ошибки? Проигрывает когда много раз используется эта команда. Игровой бот, по этому ставить интервал в polling не очень приятно, но даже с ним вылазит эта ошибка, ставил на 5 секунд - bot.infinity_polling(none_stop=True, interval=5)
elif message.text.startswith('каз') or message.text.startswith('Каз') or message.text.startswith('казино') or message.text.startswith('Казино'):
casino(message)
def casino(message):
args = message.text.split()
if len(args) < 2:
bot.reply_to(message, text='Требуется сообщение в формате "тест (аргумент1) (аргумент2)"')
else:
user_id = message.from_user.id
conn = sqlite3.connect('database.db', check_same_thread=False)
cur = conn.cursor()
money = 0
args_money = message.text.split()[1]
if args_money:
try:
money = int(args_money)
except ValueError:
bot.reply_to(message, text='Ошибка')
return
cur.execute('SELECT balance FROM users WHERE user_id=("%s")' % user_id)
users = cur.fetchall()
conn.commit()
for user in users:
if money > user[0]:
bot.reply_to(message, text=f'❌ Превышен баланс ❌\n\n? Ваш баланс: {user[0]:,}?')
return
cur.execute('UPDATE users SET balance=balance-("%s"), casino_games=casino_games+1 WHERE user_id=("%s")' % (
money, user_id))
conn.commit()
msg = bot.send_dice(message.chat.id, '?')
time.sleep(2)
if msg.dice.value == 1 or msg.dice.value == 22 or msg.dice.value == 43 or msg.dice.value == 64:
prize = money * 10
cur.execute('UPDATE users SET balance=balance+("%s") WHERE user_id=("%s")' % (prize, user_id))
conn.commit()
cur.execute('SELECT balance FROM users WHERE user_id=("%s")' % user_id)
users = cur.fetchall()
conn.commit()
for user in users:
bot.reply_to(message, text=f'✅ Вы выиграли {prize:,}?\n\n? Ваш баланс: {user[0]:,}?')
else:
cur.execute('SELECT balance FROM users WHERE user_id=("%s")' % user_id)
users = cur.fetchall()
conn.commit()
for user in users:
bot.reply_to(message, text=f'❌ Вы проиграли {money:,}?\n? Ваш баланс: {user[0]:,}?')
conn.commit()
cur.close()
conn.close()
Ответы (2 шт):
Ошибка значит, что отправляется слишком много запросов - в запросах от телеграмма есть ограничегие 30 сообщений в секунду. Для предотвращения этого - лучше использовать WebHook.
WebHook подойдёт, если бот не будет работать в общих чатах. По своему опыту говорю. У меня такой бот работал только в ЛС, а на сообщения в общих чатах отвечал с задержкой почти что в сутки. Поэтому обдумав всё и взвесив я бросил WebHook и начал писать бот на Aiogram - это асинхронная библиотека, так что может быть у меня, да и у тебя что-нибудь да получится.