@Xpym4uk76

Как решить молчанку телеграм бота при таймере?

Создал бота телеграм с игрой на таймере 60 секунд. При более двух запросах таймера, игроки не могут взаимодействовать с ботом, вот кусок где я реализовал таймер для бота:
import telebot
import asyncio

@bot.message_handler(commands=['start'])
def start(message):
        asyncio.run(ng_threadadd_2(pl_room_id, g_time, host_id, player_id))

async def ng_threadadd_2(pl_room_id, g_time, host_id, player_id):
	task = asyncio.create_task(ng_everysectimer_2(pl_room_id, g_time, host_id, player_id))
	await asyncio.gather(task)
			
async def ng_everysectimer_2(pl_room_id, g_time, host_id, player_id):
	while g_time <= 60:
		connection = sqlite3.connect('database.db')
		cursor = connection.cursor()
		cursor.execute(f'SELECT game_ended FROM users WHERE user_id = {pl_room_id};')
		boolgameend = cursor.fetchone()[0]
		if str(pl_room_id) in games and host_id != 0 and player_id != 0 and boolgameend == 0:
			if not g_time >= 60:
				g_time = g_time + 1
				await asyncio.sleep(1.0)
			else:
				bot.send_message(host_id, "Игра завершена")
                                bot.send_message(player_id, "Игра завершена")
				break
		elif boolgameend == 1:
			break

Чего я хочу добиться? - Чтобы можно было создавать более 2 таймеров которые бы не останавливали программу(Чтобы пользователи могли взаимодействовать с ботом) и бот мог отправлять сообщения, а не молчать! Прошу пожалуйста, помогите! Буду очень благодарен если решу эту проблему
  • Вопрос задан
  • 114 просмотров
Решения вопроса 1
@AlexMine
Студент
У вас код не асинхронный, вы используете asyncio и синхронный фреймворк telebot, в ней блокирующие функции.
Для взаимодействия с телеграмом возьмите библиотеку aiogram.
Для работы с sqlite, возьмите https://github.com/omnilib/aiosqlite , т.к sqlite3 тоже синхронная библиотека.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы