Бот в telegram, Python
Создать текстовую RPG игру.
Бот выводит игроку историю, в течении которой будет задавать пользователю вопросы с выбором ответов, в зависимости от ответов пользователя история будет развиваться дальше, в данной игре могут быть несколько типов концовок - положительная, отрицательная и секретные.
- Создан файл и импортирована библиотека telebot.Бот выводит историю и есть разные типы концовок, есть предметы для обмена и взятия. Не менее 70% кода покрыто комментариями, код в удобочитаемом виде (PEP8)
import telebot
bot = telebot.TeleBot('YOUR_BOT_TOKEN')
chat_id = 'CHAT ID Ваш'
class Bot:
def __init__(self):
self.player = {} # информация об игроке
def start_game(self):
# Начало игры
self.player = {'name': '', 'health': 100, 'inventory': ()}
self.ask_question("Приветствую! Как вас зовут?", ["Алекс", "Катя", "Макс"]) # Задаем первый вопрос
def ask_question(self, question_text, options):
# Задать вопрос с вариантами ответов
markup = telebot.types.ReplyKeyboardMarkup(one_time_keyboard=True) # Создаем клавиатуру с вариантами ответов
for option in options:
markup.add(telebot.types.KeyboardButton(option)) # Добавляем кнопки с вариантами ответов
bot.send_message(chat_id, question_text, reply_markup=markup) # Отправляем вопрос игроку через Telegram
def handle_answer(self, answer):
# Обработка ответа игрока
if answer == "Алекс":
self.player['name'] = "Алекс"
self.ask_question("Отлично, Алекс! Выберите предмет из инвентаря: меч или посох?", ["меч", "посох"])
elif answer == "Катя":
self.player['name'] = "Катя"
self.ask_question("Привет, Катя! Что выберешь: зелье здоровья или магический кристалл?", ["зелье", "кристалл"])
elif answer == "Макс":
self.player['name'] = "Макс"
self.ask_question("Приветствую, Макс! Куда направимся: лес или пещера?", ["лес", "пещера"])
def end_game(self, ending_type):
# Завершение игры с указанием типа концовки
if ending_type == "положительная":
# Логика для положительной концовки
pass # Замените pass на вашу логику
elif ending_type == "отрицательная":
# Логика для отрицательной концовки
pass # Замените pass на вашу логику
elif ending_type == "секретная":
# Логика для секретной концовки
pass # Замените pass на вашу логику
# Дополнительная логика для секретной концовки
secret_message = "Поздравляем! Вы нашли секретный путь и завершили игру особым образом."
bot.send_message(chat_id, secret_message) # Отправляем сообщение о секретной концовке через Telegram
# Создание экземпляра класса и запуск игры
game_bot = Bot()
game_bot.start_game()
import telebot
# Создаем бота
bot = telebot.TeleBot('TOKEN')
# История игры
story = {
'начало': {
'текст': 'Вы просыпаетесь в темной комнате. Что вы будете делать?',
'варианты': [
{'текст': 'Попытаться разглядеть что-то вокруг', 'следующий_шаг': 'комната'},
{'текст': 'Попытаться заснуть', 'следующий_шаг': 'конец_1'},
{'текст': 'Попытаться выбраться', 'следующий_шаг': 'конец_2'}
]
},
'комната': {
'текст': 'Вы видите стены и дверь. Что вы будете делать?',
'варианты': [
{'текст': 'Попытаться открыть дверь', 'следующий_шаг': 'дверь'},
{'текст': 'Искать выход', 'следующий_шаг': 'конец_3'},
{'текст': 'Попытаться вызвать помощь', 'следующий_шаг': 'конец_4'}
]
},
'дверь': {
'текст': 'Дверь закрыта. Что вы будете делать?',
'варианты': [
{'текст': 'Попытаться открыть дверь', 'следующий_шаг': 'конец_5'},
{'текст': 'Искать ключ', 'следующий_шаг': 'ключ'},
{'текст': 'Попытаться выбить дверь', 'следующий_шаг': 'конец_6'}
]
},
'ключ': {
'текст': 'Вы нашли ключ. Что вы будете делать?',
'варианты': [
{'текст': 'Попытаться открыть дверь', 'следующий_шаг': 'конец_7'},
{'текст': 'Искать другой выход', 'следующий_шаг': 'конец_8'},
{'текст': 'Остаться в комнате', 'следующий_шаг': 'конец_9'}
]
},
'конец_1': {
'текст': 'Вы заснули и не проснулись больше никогда. Конец игры.',
'варианты': []
},
'конец_2': {
'текст': 'Вы попытались выбраться, но у вас ничего не получилось. Конец игры.',
'варианты': []
},
'конец_3': {
'текст': 'Вы искали выход, но так и не нашли его. Конец игры.',
'варианты': []
},
'конец_4': {
'текст': 'Вы попытались вызвать помощь, но никто не услышал вас. Конец игры.',
'варианты': []
},
Следующая часть кода в комментарие