Валидация ответов

Vetochi

Новичок
Пользователь
Май 31, 2022
5
0
1
Здравствуйте, пишу телеграм бота с викториной. Суть в том, что он отправляет картинку, и пользователю выдаётся 4 варианта ответа (один верный). Однако после картинки сразу отвечает "не верно".
1653964800537.png 1653964827432.png
Как пофиксить?
 

Vershitel_sudeb

Vershitel sudeb
Команда форума
Модератор
Мар 17, 2021
933
208
43
20
Москва
Ну ты сам сначала пишешь
send_photo()
А потом send_message()

P. S. Как вставлять код
1642352516038-png.1549
 

Vetochi

Новичок
Пользователь
Май 31, 2022
5
0
1
Ну ты сам сначала пишешь
send_photo()
А потом send_message()

P. S. Как вставлять код
1642352516038-png.1549
А как в таком случае исправить? Попробовал уже по разному, но всегда выдаёт второй вариант - не верно.
 

Vetochi

Новичок
Пользователь
Май 31, 2022
5
0
1
Ну ты сам сначала пишешь
send_photo()
А потом send_message()

P. S. Как вставлять код
1642352516038-png.1549
Python:
    elif ms_text == "Музыкальная викторина":
        markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
        quiz = Quiz()
        print(quiz.answers)
        btn1 = types.KeyboardButton(quiz.answers[0])
        btn2 = types.KeyboardButton(quiz.answers[1])
        btn3 = types.KeyboardButton(quiz.answers[2])
        btn4 = types.KeyboardButton(quiz.answers[3])
        back = types.KeyboardButton("Вернуться назад")
        markup.add(btn1, btn2, btn3, btn4, back)
        bot.send_photo(chat_id, photo=quiz.kart, reply_markup=markup)
        if ms_text == Quiz.coransw:
            bot.send_message(chat_id, 'Верно')
        elif ms_text != Quiz.coransw:
            bot.send_message(chat_id, 'Не верно')
            
#-------------------------------------------------------------------------
import random
from covers.Covers import get_cover
import requests

class Quiz:
    kart = ""
    answers = []
    coransw = ""
    def __init__ (self):
        self.cover()
        self.answ()
        self.shuffle()
    def cover(self):
        cover = get_cover()
        self.kart = cover['img']
        self.answers.append(cover['name'])
        self.coransw = cover['name']
    def answ(self):
        word_site = "https://www.mit.edu/~ecprice/wordlist.10000"

        response = requests.get(word_site)
        WORDS = response.content.splitlines()
        self.answers.append(random.choice(WORDS).decode())
        self.answers.append(random.choice(WORDS).decode())
        self.answers.append(random.choice(WORDS).decode())
    def shuffle(self):
        random.shuffle(self.answers)
 

Vershitel_sudeb

Vershitel sudeb
Команда форума
Модератор
Мар 17, 2021
933
208
43
20
Москва
Кинь весь код, а то так не очень понятно
 

Vetochi

Новичок
Пользователь
Май 31, 2022
5
0
1
Кинь весь код, а то так не очень понятно
import random
import json
import bs4
import requests
from telebot import types
import telebot
from covers.Covers import get_cover
from quiz import Quiz

bot = telebot.TeleBot('***')

@bot.message_handler(content_types=['text'])
def get_text_messages(message):
chat_id = message.chat.id
ms_text = message.text
if ms_text == "Главное меню" or ms_text == "Вернуться в главное меню":
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
btn1 = types.KeyboardButton("Треки")
btn2 = types.KeyboardButton("Картинки")
btn3 = types.KeyboardButton("Игра")
back = types.KeyboardButton("Помощь")
markup.add(btn1, btn2, btn3, back)
bot.send_message(chat_id, text="Вы в главном меню ", reply_markup=markup)

elif ms_text == "Треки":
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
btn1 = types.KeyboardButton("Прислать текст песни")
btn2 = types.KeyboardButton("Прислать рандомный текст песни")
back = types.KeyboardButton("Вернуться в главное меню")
markup.add(btn1, btn2, back)
bot.send_message(chat_id, text="Вы перешли в Треки", reply_markup=markup)
elif ms_text == "Прислать текст песни":
bot.send_message(chat_id, text="FFFFF")
elif ms_text == "Прислать рандомный текст песни":
bot.send_message(chat_id, text=get_text())

elif ms_text == "Игра":
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
btn1 = types.KeyboardButton("Музыкальная викторина")
back = types.KeyboardButton("Вернуться в главное меню")
markup.add(btn1, back)
bot.send_message(chat_id, text="Вы перешли в Игра", reply_markup=markup)
elif ms_text == "Музыкальная викторина":
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
quiz = Quiz()
print(quiz.answers)
btn1 = types.KeyboardButton(quiz.answers[0])
btn2 = types.KeyboardButton(quiz.answers[1])
btn3 = types.KeyboardButton(quiz.answers[2])
btn4 = types.KeyboardButton(quiz.answers[3])
back = types.KeyboardButton("Вернуться назад")
markup.add(btn1, btn2, btn3, btn4, back)
bot.send_photo(chat_id, photo=quiz.kart, reply_markup=markup)
if ms_text == Quiz.coransw:
bot.send_message(chat_id, 'Верно')
elif ms_text != Quiz.coransw:
bot.send_message(chat_id, 'Не верно')

else:
bot.send_message(chat_id, text="Вас слышно")

def get_text():
array_texts = ['FFFFFF']
bobtek = requests.get(random.choice(array_texts))
soup = bs4.BeautifulSoup(bobtek.text, "html.parser")
result_find = soup.select('#lyric-body-text')
return result_find[0].getText()

bot.polling(none_stop=True, interval=0)

print()

#---------------------------------------------------------------- quiz.py
import random
from covers.Covers import get_cover
import requests

class Quiz:
kart = ""
answers = []
coransw = ""
def __init__ (self):
self.cover()
self.answ()
self.shuffle()
def cover(self):
cover = get_cover()
self.kart = cover['img']
self.answers.append(cover['name'])
self.coransw = cover['name']
def answ(self):
word_site = "https://www.mit.edu/~ecprice/wordlist.10000"

response = requests.get(word_site)
WORDS = response.content.splitlines()
self.answers.append(random.choice(WORDS).decode())
self.answers.append(random.choice(WORDS).decode())
self.answers.append(random.choice(WORDS).decode())
def shuffle(self):
random.shuffle(self.answers)
def check(self, msg):
return self.coransw == msg

#-------------------------------------------------------------- Covers.py
import random
import requests
import bs4


def get_cover():
array_covers = ['https://www.generatormix.com/random-album-generator']
print(random.choice(array_covers))
cov = requests.get(random.choice(array_covers))
print(cov)
soup = bs4.BeautifulSoup(cov.content, "html.parser")
result_find = soup.select('#output > div > div.thumbnail-col-3.tile-block-inner.marg-top.first > img')
result_find_name = soup.select('#output > div > div.thumbnail-col-3.tile-block-inner.marg-top.first > div > h3')[0]
result_find_artist = soup.select('#output > div > div.thumbnail-col-3.tile-block-inner.marg-top.first > div > p.text-right.pull-right > strong')[0]
return {
"artist": result_find_artist.text,
"name": result_find_name.text,
"img": result_find[0]['src']
}
 

Vetochi

Новичок
Пользователь
Май 31, 2022
5
0
1
Кинь весь код, а то так не очень понятно
По сути нужно, чтобы бот дождался ответа и после этого ответил верно или нет
 

Форум IT Специалистов