Телеграмм бот игра не понимаю как доделать код

Eva

Новичок
Пользователь
Фев 2, 2022
58
3
8
16
Здравствуйте, короче начала делать бота-игру: Камень, Ножницы, Бумага, и короче уже почти сделала бота но не могу как сюда приписать кнопки с попробовать еще раз и что бы когда юзер нажимал на кнопку игра запускалась заново, все готово остался вот этот последний шаг! прошу помочь я пришлю бота и туда как напишите: /start, там будет инструкция и короче надо написать либо нажать /play, и игра запуститься короче там все легко и вот короче как выберите что нажать и нажмете там либо ты проиграл, победил, ничья вообщем после этого шага я хотела сделать текст: Попробовать еще? и там кнопки: Да-Нет.
Короче вот не могу понять как это сделать и что бы когда он нажимал: Да то игра заново запускалась. а если: Нет то благодарила за игру и потом была возможность опять вести /play короче такой мини бот но не могу понять как склеить это все в реальность.
Имя бота: https://t.me/evasinpay_game_bot
Пишите /start и там уже должно быть описание и что дальше делать
а вот код:
Python:
from telebot import *
import random

bot = telebot.TeleBot('5375857393:AAEeD6g5DKYGxGETzuLMUtbuEMGH_WcDyqk')

@bot.message_handler(commands=['start'])
def start_message(message):
    bot.send_message(message.chat.id,'Привет, чтобы начать играть введи комманду: /play\n\nНо в начале лучше почитай правила:\n\nПравила игры в - Камень Ножницы Бумагу:\nКогда ты напишешь играть то начнется твоя игра с ботом, попробуй победить бота в этой игре :)\nТвоя задача выбрать что ты хочешь использовать против бота, тут список что ты можешь выбрать = (Камень, Ножницы, Бумага)\nВсе это нажимается на кнопках!\nНа этом все удачной игры!\nЧтобы начать играть введи комманду: /play')


@bot.message_handler(commands=['play'])
def kgb_message(message):
    markup = types.InlineKeyboardMarkup()
    k = types.InlineKeyboardButton(text="Камень", callback_data="Камень")
    g = types.InlineKeyboardButton(text="Ножницы", callback_data="Ножницы")
    b = types.InlineKeyboardButton(text="Бумага", callback_data="Бумага")

    markup.add(k, g, b)
    bot.send_message(message.chat.id, "Выберите один из предметов: ", reply_markup=markup)


@bot.callback_query_handler(func=lambda call: True)
def query_handler(call):
    city_list = ["Камень", "Ножницы", "Бумага"]
    kgb = random.choice(city_list)

    if call.data == 'Камень':
        bot.answer_callback_query(callback_query_id=call.id, text='Ваш ход принят!')
        bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id,
                              text="Вы выбрали: Камень", reply_markup=None)

    elif call.data == 'Ножницы':
        bot.answer_callback_query(callback_query_id=call.id, text='Ваш ход принят!')
        bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id,
                              text="Вы выбрали: Ножницы", reply_markup=None)
    elif call.data == 'Бумага':
        bot.answer_callback_query(callback_query_id=call.id, text='Ваш ход принят!')
        bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id,
                              text="Вы выбрали: Бумагу", reply_markup=None)

    if call.data == kgb:
        bot.send_message(call.message.chat.id, f"У вас ничья! Бот выбрал: {kgb}")


    elif call.data == "Камень":
        if kgb == "Ножницы":
            bot.send_message(call.message.chat.id, f"Вы победили! Бот выбрал: {kgb}")

        else:
            bot.send_message(call.message.chat.id, f"Вы проиграли! Бот выбрал: {kgb}")

    elif call.data == "Бумага":
        if kgb == "Камень":
            bot.send_message(call.message.chat.id, f"Вы победили! Бот выбрал: {kgb}")

        else:
            bot.send_message(call.message.chat.id, f"Вы проиграли! Бот выбрал: {kgb}")

    elif call.data == "Ножницы":
        if kgb == "Бумага":
            bot.send_message(call.message.chat.id, f"Вы победили! Бот выбрал: {kgb}")

        else:
            bot.send_message(call.message.chat.id, f"Вы проиграли! Бот выбрал: {kgb}")


bot.infinity_polling()

Спасибо всем за помощь!
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
короче такой мини бот но не могу понять как склеить это все в реальность
Вот так можно например:
Python:
import telebot
from telebot import types
import random


bot = telebot.TeleBot('5375857393:AAEeD6g5DKYGxGETzuLMUtbuEMGH_WcDyqk')

items = types.InlineKeyboardMarkup()
k = types.InlineKeyboardButton(text="Камень", callback_data="Камень")
g = types.InlineKeyboardButton(text="Ножницы", callback_data="Ножницы")
b = types.InlineKeyboardButton(text="Бумага", callback_data="Бумага")
items.add(k, g, b)

ask = types.InlineKeyboardMarkup()
y = types.InlineKeyboardButton(text="Да", callback_data="Да")
n = types.InlineKeyboardButton(text="Нет", callback_data="Нет")
ask.add(y, n)

@bot.message_handler(commands=['start'])
def start_message(message):
    bot.send_message(message.chat.id, 'Привет, чтобы начать играть введи команду: /play\n\nНо в начале лучше почитай правила:\n\nПравила игры в - Камень Ножницы Бумагу:\nКогда ты напишешь играть то начнется твоя игра с ботом, попробуй победить бота в этой игре :)\nТвоя задача выбрать что ты хочешь использовать против бота, тут список что ты можешь выбрать = (Камень, Ножницы, Бумага)\nВсе это нажимается на кнопках!\nНа этом все удачной игры!\nЧтобы начать играть введи комманду: /play')


@bot.message_handler(commands=['play'])
def kgb_message(message):   
    bot.send_message(message.chat.id, "Выберите один из предметов: ", reply_markup=items)


@bot.callback_query_handler(func=lambda call: call.data in ["Камень", "Ножницы", "Бумага"])
def query_handler(call):
    kgb = random.choice(["Камень", "Ножницы", "Бумага"])

    bot.answer_callback_query(callback_query_id=call.id, text='Ваш ход принят!')
    bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id,
                          text=f"Вы выбрали: {call.data}", reply_markup=None)
    
    win = {"Камень": "Ножницы", "Ножницы": "Бумага", "Бумага": "Камень"}

    if win[call.data] == kgb:
        bot.send_message(call.message.chat.id, f"Вы победили! Бот выбрал: {kgb}")
    elif call.data == kgb:
        bot.send_message(call.message.chat.id, f"У вас ничья! Бот выбрал: {kgb}")
    else:
        bot.send_message(call.message.chat.id, f"Вы проиграли! Бот выбрал: {kgb}")

    bot.send_message(call.message.chat.id, "Попробовать еще? ", reply_markup=ask)


@bot.callback_query_handler(func=lambda call: call.data in ["Да", "Нет"])
def replay(call):
    if call.data == 'Да':       
        bot.answer_callback_query(callback_query_id=call.id, text='Новая игра!')
        bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id,
                              text="Выберите один из предметов: ", reply_markup=items)     
    else:
        bot.answer_callback_query(callback_query_id=call.id, text='Игра окончена!')
        bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id,
                              text="Спасибо за игру.", reply_markup=None) 

bot.infinity_polling()
 

Eva

Новичок
Пользователь
Фев 2, 2022
58
3
8
16
Вот так можно например:
Python:
import telebot
from telebot import types
import random


bot = telebot.TeleBot('5375857393:AAEeD6g5DKYGxGETzuLMUtbuEMGH_WcDyqk')

items = types.InlineKeyboardMarkup()
k = types.InlineKeyboardButton(text="Камень", callback_data="Камень")
g = types.InlineKeyboardButton(text="Ножницы", callback_data="Ножницы")
b = types.InlineKeyboardButton(text="Бумага", callback_data="Бумага")
items.add(k, g, b)

ask = types.InlineKeyboardMarkup()
y = types.InlineKeyboardButton(text="Да", callback_data="Да")
n = types.InlineKeyboardButton(text="Нет", callback_data="Нет")
ask.add(y, n)

@bot.message_handler(commands=['start'])
def start_message(message):
    bot.send_message(message.chat.id, 'Привет, чтобы начать играть введи команду: /play\n\nНо в начале лучше почитай правила:\n\nПравила игры в - Камень Ножницы Бумагу:\nКогда ты напишешь играть то начнется твоя игра с ботом, попробуй победить бота в этой игре :)\nТвоя задача выбрать что ты хочешь использовать против бота, тут список что ты можешь выбрать = (Камень, Ножницы, Бумага)\nВсе это нажимается на кнопках!\nНа этом все удачной игры!\nЧтобы начать играть введи комманду: /play')


@bot.message_handler(commands=['play'])
def kgb_message(message):  
    bot.send_message(message.chat.id, "Выберите один из предметов: ", reply_markup=items)


@bot.callback_query_handler(func=lambda call: call.data in ["Камень", "Ножницы", "Бумага"])
def query_handler(call):
    kgb = random.choice(["Камень", "Ножницы", "Бумага"])

    bot.answer_callback_query(callback_query_id=call.id, text='Ваш ход принят!')
    bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id,
                          text=f"Вы выбрали: {call.data}", reply_markup=None)
   
    win = {"Камень": "Ножницы", "Ножницы": "Бумага", "Бумага": "Камень"}

    if win[call.data] == kgb:
        bot.send_message(call.message.chat.id, f"Вы победили! Бот выбрал: {kgb}")
    elif call.data == kgb:
        bot.send_message(call.message.chat.id, f"У вас ничья! Бот выбрал: {kgb}")
    else:
        bot.send_message(call.message.chat.id, f"Вы проиграли! Бот выбрал: {kgb}")

    bot.send_message(call.message.chat.id, "Попробовать еще? ", reply_markup=ask)


@bot.callback_query_handler(func=lambda call: call.data in ["Да", "Нет"])
def replay(call):
    if call.data == 'Да':      
        bot.answer_callback_query(callback_query_id=call.id, text='Новая игра!')
        bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id,
                              text="Выберите один из предметов: ", reply_markup=items)    
    else:
        bot.answer_callback_query(callback_query_id=call.id, text='Игра окончена!')
        bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id,
                              text="Спасибо за игру.", reply_markup=None)

bot.infinity_polling()
Ого спасибки! помогло)
 

Def

Новичок
Пользователь
Май 21, 2022
10
0
1
Odessa UA
Это о ком или о чем
15-04-2022_184803_vivaldi-png.1757
 

Eva

Новичок
Пользователь
Фев 2, 2022
58
3
8
16
Это о ком или о чем
15-04-2022_184803_vivaldi-png.1757
это лучший ответ если поставишь то будет лучший ответ
 

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