@pphhpphh

Как сделать это?

https://youtu.be/0pRi-X75fAo
Захожу в бот тг, скидываю ссылку на страницу вк, спец.код записывается в базу данных, я отправляю код для подтверждения в личные сообщения бота в вк, он обновляет базу данных и изменят tg_user на accept, далее я проверяю каждые 3 секунды что если tg_user = accept то я меняю tg_user на айди юзера, и все

Ошибка: Не получается получить значение tg_user в момент когда я получаю его значение каждые 3 секунды

Так-же хочу услышать ошибки по коду и как его лучше сделать, с mysql начал работать недавно

reg.py
async def vk(message:types.Message, state=Reg):
    split = message.text.split("/")
    result = get_id_vk(split[len(split)-1])
    if result:
        await message.answer(result)
        msql.execute("SELECT `nickname` FROM `accounts` WHERE `vkid` = %s", [result])
        ab = msql.fetchone()
        try:
            ab['nickname']
            code = random.randint(0,99999999)
            msql.execute("UPDATE `accounts` SET `code` = %s WHERE `vkid` = %a", [code, result])
            msql.connection.commit()
            await message.answer("Перейдите в нашего вк бота нажав на кнопку под сообщением, и отправьте ему сообщение\n\n"
                                 "⚠ КОД БУДЕТ РАБОТАТЬ В ТЕЧЕНИИ 10 МИНУТ\n"
                                 f"`TelegramAccept_{code}`", parse_mode="Markdown")
            await message.answer(f"TelegramAccept_{code}")
            loop = asyncio.get_running_loop()
            end_time = loop.time() + 20.0
            while True:
                print(datetime.datetime.now())
                msql.execute("USE `gs188101`")
                msql.execute("SELECT `tg_user` FROM `accounts` WHERE `vkid` = %s", [result])
                check = msql.fetchone()
                print(check)
                if (loop.time() + 1.0) >= end_time:
                    if str(check['tg_user']) == "accept":
                        msql.execute("UPDATE `accounts` SET `tg_user` = %s WHERE `vkid` = %a", [message.from_user.id, result])
                        msql.connection.commit()
                        await message.answer("Подтверждено!")
                    else:
                        await message.answer("Время вышло")
                        break
                else:
                    if str(check['tg_user']) == "accept":
                        msql.execute("UPDATE `accounts` SET `tg_user` = %s WHERE `vkid` = %a", [message.from_user.id, result])
                        msql.connection.commit()
                        await message.answer("Подтверждено!")
                        break
                    else:
                        pass
                await asyncio.sleep(3)
        except:
            pass
    else:
        await message.answer("Неверный формат ссылки")


vklong.py
try:
    connection = pymysql.connect(
        host="host",
        port=3306,
        user="user",
        password="pass",
        cursorclass=pymysql.cursors.DictCursor
    )
    print("Подключение успешно!")
except Exception as ex:
    print("Ошибка")
    print(ex)

for event in VkLongPoll(vk).listen():
    if event.type == VkEventType.MESSAGE_NEW and event.to_me:
        split = event.text.split("_")
        code_msg = split[1]
        print(event.user_id)
        if split[0] == "TelegramAccept":
            msql.execute("SELECT `code` FROM `accounts` WHERE `vkid` = %s", [event.user_id])
            code = msql.fetchone()
            code = eval(code['code'])
            print(code)
            if str(code) == str(code_msg):
                print("accept")
                msql.execute("UPDATE `accounts` SET `tg_user` = %s WHERE `vkid` = %a", ['accept', event.user_id])
                msql.execute("SELECT `tg_user` FROM `accounts` WHERE `vkid` = %s", [event.user_id])
                test = msql.fetchone()
                print(test)
                msql.connection.commit()
            else:
                print("non accept")
  • Вопрос задан
  • 243 просмотра
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
SpectrumData Екатеринбург
от 150 000 до 200 000 ₽
Гринатом Москва
от 150 000 ₽
DIGITAL SECTOR Краснодар
от 150 000 до 250 000 ₽