Задать вопрос
roflanchik
@roflanchik
17 летний недоprogrammer

Асинохрон телебот возможен?

Приветствую знатоки. Делаю проект по программированию, но когда в боте 2 и более людей, он просто сохраняет входные и выходные данные одного пользователя всем.

Код
import telebot
import random
import time

bot = telebot.TeleBot(НЕ СКАЖУ:D)

d = '''Австралия\tКанберра
Австрия	Вена
Азербайджан	Баку
Албания	Тирана
Алжир	Алжир
Ангола	Луанда
Андорра	Андорра-ла-Велья
Антигуа и Барбуда	Сент-Джонс
Аргентина	Буэнос-Айрес
Армения	Ереван
Афганистан	Кабул
Багамы	Нассау
Бангладеш	Дакка
Барбадос	Бриджтаун
Бахрейн	Манама
Беларусь	Минск
Белиз	Бельмопан
Бельгия	Брюссель
Бенин	Порто-Ново
Болгария	София
Боливия	Сукре
Босния и Герцеговина	Сараево
Ботсвана	Габороне
Бразилия	Бразилиа
Бруней	Бандар-Сери-Багаван
Буркина Фасо	Уагадугу
Бурунди	Бужумбура
Бутан	Тхимпху
Вануату	Порт-Вила
Ватикан	Ватикан
Великобритания	Лондон
Венгрия	Будапешт
Венесуэла	Каракас
Восточный Тимор	Дили
Вьетнам	Ханой
Габон	Либревиль
Гаити	Порт-о-Пренс
Гайана	Джорджтаун
Гамбия	Банжул
Гана	Аккра
Гватемала	Гватемала
Гвинея	Конакри
Гвинея-Бисау	Бисау
Германия	Берлин
Гондурас	Тегусигальпа
Гренада	Сент-Джорджес
Греция	Афины
Грузия	Тбилиси
Дания	Копенгаген
Джибути	Джибути
Доминикан	Розо
Доминиканская Республика	Санто-Доминго
Египет	Каир
Замбия	Лусака
Зимбабве	Хараре
Израиль	Иерусалим
Индия	Нью-Дели
Индонезия	Джакарта
Иордания	Амман
Ирак	Багдад
Иран	Тегеран
Ирландия	Дублин
Исландия	Рейкьявик
Испания	Мадрид
Италия	Рим
Йемен	Сана
Кабо-Верде	Прая
Казахстан	Астана
Камбоджа	Пномпень
Камерун	Яунде
Канада	Оттава
Катар	Доха
Кения	Найроби
Кипр	Никосия
Киргизия	Бишкек
Кирибати	Южная Тарава
Китай	Пекин
Колумбия	Санта-Фе-де-Богота
Коморы	Морони
Конго, демократическая республика	Киншаса
Конго, республика	Браззавиль
Коста-Рика	Сан-Хосе
Кот-д’Ивуар	Ямусукро
Куба	Гавана
Кувейт	Эль-Кувейт
Лаос	Вьентьян
Латвия	Рига
Лесото	Масеру
Либерия	Монровия
Ливан	Бейрут
Ливия	Триполи
Литва	Вильнюс
Лихтенштейн	Вадуц
Люксембург	Люксембург
Маврикий	Порт-Луи
Мавритания	Нуакшот
Мадагаскар	Антананариву
Македония	Скопье
Малави	Лилонгве
Малайзия	Куала-Лумпур
Мали	Бамако
Мальдивы	Мале
Мальта	Валлетта
Марокко	Рабат
Маршалловы Острова	Маджуро
Мексика	Мехико
Мозамбик	Мапуту
Молдавия	Кишинев
Монако	Монако
Монголия	Улан-Батор
Мьянма	Найпьидо
Намибия	Виндхук
Науру	официальной столицы не имеет
Непал	Катманду
Нигер	Ниамей
Нигерия	Абуджа
Нидерланды	Амстердам
Никарагуа	Манагуа
Новая Зеландия	Веллингтон
Норвегия	Осло
Объединенные Арабские Эмираты	Абу-Даби
Оман	Маскат
Пакистан	Исламабад
Палау	Мелекеок
Панама	Панама
Папуа - Новая Гвинея	Порт-Морсби
Парагвай	Асунсьон
Перу	Лима
Польша	Варшава
Португалия	Лиссабон
Россия	Москва
Руанда	Кигали
Румыния	Бухарест
Сальвадор	Сан-Сальвадор
Самоа	Апиа
Сан-Марино	Сан-Марино
Сан-Томе и Принсипи	Сан-Томе
Саудовская Аравия	Эр-Рияд
Свазиленд	Мбабане
Северная Корея	Пхеньян
Сейшелы	Виктория
Сенегал	Дакар
Сент-Винсент и Гренадины	Кингстаун
Сент-Китс и Невис	Бастер
Сент-Люсия	Кастри
Сербия	Белград
Сингапур	Сингапур
Сирия	Дамаск
Словакия	Братислава
Словения	Любляна
Соединенные Штаты Америки	Вашингтон
Соломоновы Острова	Хониара
Сомали	Могадишо
Судан	Хартум
Суринам	Парамарибо
Сьерра-Леоне	Фритаун
Таджикистан	Душанбе
Таиланд	Бангкок
Танзания	Додома
Того	Ломе
Тонга	Нукуалофа
Тринидад и Тобаго	Порт-оф-Спейн
Тувалу	Фунафути
Тунис	Тунис
Туркмения	Ашхабад
Турция	Анкара
Уганда	Кампала
Узбекистан	Ташкент
Украина	Киев
Уругвай	Монтевидео
Федеративные штаты Микронезии	Паликир
Фиджи	Сува
Филиппины	Манила
Финляндия	Хельсинки
Франция	Париж
Хорватия	Загреб
Центрально-Африканская Республика	Банги
Чад	Нджамена
Черногория	Подгорица
Чехия	Прага
Чили	Сантьяго
Швейцария	Берн
Швеция	Стокгольм
Шри-Ланка	Коломбо
Эквадор	Кито
Экваториальная Гвинея	Малабо
Эритрея	Асмэра
Эстония	Таллин
Эфиопия	Аддис-Абеба
Южная Корея	Сеул
Южно-Африканская Республика	Претория
Ямайка	Кингстон
Япония	Токио'''
dict_1 = []
dict_2 = []
for line in d.splitlines():
    lst = line.split('\t')
    name = lst[0]
    surname = lst[1]
    dict_1.append([name, surname])
    dict_2.append([surname, name])
c = 0
b = 0
k = 0
i = 0


@bot.message_handler(content_types=['text'])
def get_text_messages(message):
    global c
    global b
    global k
    if message.text == "Привет" or message.text == "Здраствуй!":
        bot.send_message(message.from_user.id, "Привет, это угадайка! Проверь свои силы!")
    elif message.text == "/startgame" or message.text.lower() == 'да':
        b = random.randint(0, 1)
        c = random.randint(0, 193)
        if b == 0:
            bot.send_message(message.from_user.id, f"Назови мне столицу {dict_1[c][0]}")
        else:
            bot.send_message(message.from_user.id, f"Назови мне страну, столицей которой является город: {dict_2[c][0]}")
        register_next_step_handler(message, guess)
    elif message.text == '/start':
        bot.send_message(message.from_user.id, "Привет! Это бот угадайка!")
    elif message.text.lower() == '/stopgame' or 'нет':
        k = 0
        bot.send_message(message.from_user.id, "Хорошо! Обязательно поробуй еще!")
    elif message.text == "/help":
        bot.send_message(message.from_user.id, "Напиши 'Привет' или 'Здраствуй!, или '/startgame'")
    else:
        bot.send_message(message.from_user.id, "Я тебя не понимаю. Напиши /help.")


def guess(message):
    global k
    global b
    global c
    global i
    if b == 0:
        if message.text == dict_1[c][1]:
            k = k + 1
            bot.send_message(message.from_user.id, f'Молодец! Твой стрик: {k}. Продолжим? ')
            bot.register_next_step_handler(message, get_text_messages)
            i = 1
        elif message.text.lower() == '/stopgame' or message.text.lower() == 'нет':
            bot.send_message(message.from_user.id, "Хорошо! Обязательно поробуй еще!")
            k = 0
        else:
            bot.send_message(message.from_user.id, f'Ты ошибся! Это был город: {dict_1[c][1]}')
            bot.send_message(message.from_user.id, 'Хочешь сыграть еще? Напиши /startgame')
            k = 0
            bot.register_next_step_handler(message, get_text_messages)
            i = 0
    else:
        if message.text == dict_2[c][1]:
            k = k + 1
            bot.send_message(message.from_user.id, f'Молодец! Твой стрик: {k}. Продолжим? ')
            bot.register_next_step_handler(message, get_text_messages)
            i = 1
        elif message.text == '/stopgame' or message.text.lower() == 'нет':
            bot.send_message(message.from_user.id, "Хорошо! Обязательно поробуй еще!")
            k = 0
        else:
            bot.send_message(message.from_user.id, f'Ты ошибся! Это была страна: {dict_2[c][1]}')
            bot.send_message(message.from_user.id, 'Хочешь сыграть еще? Напиши /startgame')
            k = 0
            bot.register_next_step_handler(message, get_text_messages)
            i = 0


while True:
    try:
        bot.polling(none_stop=True)

    except Exception as e:
        print(e)
        time.sleep(15)
  • Вопрос задан
  • 277 просмотров
Подписаться 2 Простой 2 комментария
Решения вопроса 1
Lord_of_Rings
@Lord_of_Rings
Северный странник. Злой, но добрый
Асинохрон телебот возможен?

Возможен, но в вашем случае надо использовать базу данных
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы