Cannot fix the error in line 100 – txt = ‘Игра “Виселица” n’ + BotMessage(). BotMessage() does not accept 4 values. How to fix this error? And are there any other potential errors in the code?
import telebot
import random
Token = '8488484'
bot = telebot.TeleBot(Token)
hangman = ['''
+---+
|
|
|
===''', '''
+---+
0 |
|
|
===''', '''
+---+
0 |
| |
|
===''', '''
+---+
0 |
/| |
|
===''', '''
+---+
0 |
/| |
|
===''', '''
+---+
0 |
/| |
/ |
===''', '''
+---+
0 |
/| |
/ |
===''']
words = 'акула баран бегемот верблюд ворона гепард гиена дельфин дятел ехидна жаба жираф заяц зебра игуана кабан козёл лебедь ленивец медведь мангуст норка носорог олень пингвин попугай собака суслик тюлень утконос фазан хорёк хомяк цапля чайка щегол ягуар ястреб'.split()
def RandomWord(WordList):
word = random.randint(0, len(WordList) - 1)
return WordList[word]
def interface(unCorrectLetters, CorrectLetter, Riddle):
person = hangman[len(unCorrectLetters)]
UNCletter = str('Неправильные буквы:', end=' ')
for letter in unCorrectLetters:
a = str(letter, end=' ')
spaces = '_' * len(Riddle)
for i in range(len(Riddle)):
if Riddle[i] in CorrectLetter:
spaces = spaces[:i] + Riddle[i] + spaces[i+1:]
for letter in spaces:
b = str(letter, end=' ')
input_letter = 'Введите букву'
#main(person, UNCletter, spaces, input_letter)
return (person, UNCletter, spaces, input_letter)
def Guess(message, already):
while True:
guess = message.text.lower()
if len(guess) != 1:
bot.send_message(message.from_user.id, 'Введите одну букву')
elif guess in already:
bot.send_message(message.from_user.id, 'Вы уже называли эту букву, введите другую')
elif guess not in 'абвгдеёжзийклмнопрстуфхцчшщъыьэюя':
bot.send_message(message.from_user.id, 'Вводить можно только буквы')
else:
return guess
def BotMessage(person, UNCletter, spaces, input_letter):
bot_message = person
bot_message += "n" + UNCletter
bot_message += "n" + spaces
bot_message += "n" + input_letter
return bot_message
help = 'Привет! Это игра, в которой бот загадывает слово, а твоя задача его угадать. Чтобы начать игру, напиши команду /hanging'
@bot.message_handler(content_types=['text'])
def main(message):
if message.text == '/hanging':
txt = 'Игра "Виселица" n' + BotMessage()
bot.send_message(message.from_user.id, txt)
unCorrectLetters = ''
CorrectLetter = ''
Riddle = RandomWord(words)
while True:
interface_variables = interface(unCorrectLetters, CorrectLetter, Riddle)
guess = Guess(message, unCorrectLetters + CorrectLetter)
if guess in Riddle:
CorrectLetter = CorrectLetter + guess
allLetters = True
for i in range(len(Riddle)):
if Riddle[i] not in CorrectLetter:
allLetters = False
break
if allLetters:
bot.send_message(message.from_user.id, 'Вы угадали! Загаданное слово - "' + Riddle + '"!')
break
else:
unCorrectLetters = unCorrectLetters + guess
if len(unCorrectLetters) == len(hangman) - 1:
interface(unCorrectLetters, CorrectLetter, Riddle)
bot.send_message(message.from_user.id, 'Вы исчерпали все попытки! Загаданное слово - "' + Riddle + '"!')
break
elif message.text == "/help":
bot.send_message(message.from_user.id, help)
else:
bot.send_message(message.from_user.id, "Я тебя не понимаю. Напиши /help.")
bot.polling(none_stop=True, interval=0, timeout=120)
The code runs without errors, but when the bot receives the message ‘/hanging’ it gives an error.
I’ve tried many ways, but none of them work.
New contributor
user25186165 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.