Пишу бота в телеграмм что бы учить слова по Английскому языку с помощью библиотеки aiogram. Когда запускаю бота с одного устройства все работает корректно, но если запустить с нескольких устройств то переменные data, right и wrone работают некорректно. Подскажите пожалуйста как это можно исправить или написать код по другому. Заранее спасибо!
import random
from config import TOKEN
from word_list import word_list
from aiogram import Bot, types
from aiogram.dispatcher import Dispatcher
from aiogram.utils import executor
from aiogram.dispatcher import FSMContext
from aiogram.contrib.fsm_storage.memory import MemoryStorage
from aiogram.dispatcher.filters.state import State, StatesGroup
storage = MemoryStorage()
bot = Bot(token=TOKEN)
dp = Dispatcher(bot, storage=storage)
data = []
right = []
wrone = []
@dp.message_handler(commands=['start', 'help'])
async def command_start(message: types.Message):
await message.answer(f'В программе всего слов: {len(word_list)}')
class FSMTest(StatesGroup):
question_1 = State()
question_2 = State()
question_3 = State()
question_4 = State()
question_5 = State()
question_6 = State()
question_7 = State()
question_8 = State()
question_9 = State()
question_10 = State()
@dp.message_handler(commands='test', state=None)
async def cm_start(message: types.Message, state: FSMContext):
def random_start():
random_list = random.sample(range(len(word_list)), 10)
data.append(random_list)
random_start()
await FSMTest.question_1.set()
await message.reply(f"Переведи слово: {word_list[data[0][0]] [1]}")
@dp.message_handler(state=FSMTest.question_1)
async def load_question_1(message: types.Message, state: FSMContext):
answer = (word_list[data[0][0]] [0])
if answer == message.text:
right.append(1)
await message.reply('Правильный овтет ')
else:
wrone.append(1)
await message.reply(f"Не верно ❌❌❌, правильный ответ: {word_list[data[0][0]] [0]}")
await message.reply(f"Переведи слово: {word_list[data[0][1]] [1]}")
await FSMTest.next()
@dp.message_handler(state=FSMTest.question_2)
async def load_question_2(message: types.Message, state: FSMContext):
answer = (word_list[data[0][1]] [0])
if answer == message.text:
right.append(1)
await message.reply('Правильный овтет ')
else:
wrone.append(1)
await message.reply(f"Не верно ❌❌❌, правильный ответ: {word_list[data[0][1]] [0]}")
await message.reply(f"Переведи слово: {word_list[data[0][2]] [1]}")
await FSMTest.next()
@dp.message_handler(state=FSMTest.question_3)
async def load_question_3(message: types.Message, state: FSMContext):
answer = (word_list[data[0][2]] [0])
if answer == message.text:
right.append(1)
await message.reply('Правильный овтет ')
else:
wrone.append(1)
await message.reply(f"Не верно ❌❌❌, правильный ответ: {word_list[data[0][2]] [0]}")
await message.reply(f"Переведи слово: {word_list[data[0][3]] [1]}")
await FSMTest.next()
@dp.message_handler(state=FSMTest.question_4)
async def load_question_4(message: types.Message, state: FSMContext):
answer = (word_list[data[0][3]] [0])
if answer == message.text:
right.append(1)
await message.reply('Правильный овтет ')
else:
wrone.append(1)
await message.reply(f"Не верно ❌❌❌, правильный ответ: {word_list[data[0][3]] [0]}")
await message.reply(f"Переведи слово: {word_list[data[0][4]] [1]}")
await FSMTest.next()
@dp.message_handler(state=FSMTest.question_5)
async def load_question_5(message: types.Message, state: FSMContext):
answer = (word_list[data[0][4]] [0])
if answer == message.text:
right.append(1)
await message.reply('Правильный овтет ')
else:
wrone.append(1)
await message.reply(f"Не верно ❌❌❌, правильный ответ: {word_list[data[0][4]] [0]}")
await message.reply(f"Переведи слово: {word_list[data[0][5]] [1]}")
await FSMTest.next()
@dp.message_handler(state=FSMTest.question_6)
async def load_question_6(message: types.Message, state: FSMContext):
answer = (word_list[data[0][5]] [0])
if answer == message.text:
right.append(1)
await message.reply('Правильный овтет ')
else:
wrone.append(1)
await message.reply(f"Не верно ❌❌❌, правильный ответ: {word_list[data[0][5]] [0]}")
await message.reply(f"Переведи слово: {word_list[data[0][6]] [1]}")
await FSMTest.next()
@dp.message_handler(state=FSMTest.question_7)
async def load_question_7(message: types.Message, state: FSMContext):
answer = (word_list[data[0][6]] [0])
if answer == message.text:
right.append(1)
await message.reply('Правильный овтет ')
else:
wrone.append(1)
await message.reply(f"Не верно ❌❌❌, правильный ответ: {word_list[data[0][6]] [0]}")
await message.reply(f"Переведи слово: {word_list[data[0][7]] [1]}")
await FSMTest.next()
@dp.message_handler(state=FSMTest.question_8)
async def load_question_8(message: types.Message, state: FSMContext):
answer = (word_list[data[0][7]] [0])
if answer == message.text:
right.append(1)
await message.reply('Правильный овтет ')
else:
wrone.append(1)
await message.reply(f"Не верно ❌❌❌, правильный ответ: {word_list[data[0][7]] [0]}")
await message.reply(f"Переведи слово: {word_list[data[0][8]] [1]}")
await FSMTest.next()
@dp.message_handler(state=FSMTest.question_9)
async def load_question_9(message: types.Message):
answer = (word_list[data[0][8]] [0])
if answer == message.text:
right.append(1)
await message.reply('Правильный овтет ')
else:
wrone.append(1)
await message.reply(f"Не верно ❌❌❌, правильный ответ: {word_list[data[0][8]] [0]}")
await message.reply(f"Переведи слово: {word_list[data[0][9]] [1]}")
await FSMTest.next()
@dp.message_handler(state=FSMTest.question_10)
async def load_question_10(message: types.Message, state: FSMContext):
answer = (word_list[data[0][9]] [0])
if answer == message.text:
right.append(1)
await message.reply('Правильный овтет ')
else:
wrone.append(1)
await message.reply(f"Не верно ❌❌❌, правильный ответ: {word_list[data[0][9]] [0]}")
await message.reply(f'Правильных ответов: {len(right)}, Неправильных ответов: {len(wrone)}')
data.clear()
right.clear()
wrone.clear()
await state.finish()
executor.start_polling(dp, skip_updates=True)