es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

El bot de Telegram “Adivina el número” cambia el número secreto cada vez que recibe una nueva suposición del usuario.

Estoy haciendo un bot de Telegram de ‘adivina el número’, que supuestamente debe generar un número entero aleatorio del 0 al 100. Cuando el usuario intenta adivinar el número, el bot debe dar pistas, mostrando si su adivinanza es menor o mayor que el número secreto. Pero parece que cambia el número secreto cada vez que recibe una nueva adivinanza del usuario.

Aquí está todo el código:

import random
import telebot
from telebot.types import Message
bot = telebot.TeleBot("-token-")

@bot.messagehandler(commands = ('start'))
def guessnumber():
   a = random.randint(0,100)
   a = guessnumber.variable
def sendwelcome(message):
   bot.send_message(message.chat.id, "you entered a guessing game, traveller. Guess a number from 0 to 100, or be eaten by a  dragon.")

@bot.messagehandler(func=lambda message: True)
def checking(message):
    try: 
        usermessage = int(message.text)
        if usermessage > guessnumber.variable:
            bot.sendmessage(message.chat.id, "your number is greater than mine")
        elif usermessage < guessnumber.variable:
            bot.sendmessage(message.chat.id, "your number is smaller than mine")
        else:
            bot.sendmessage(message.chat.id, "yep, that's the right number")
    except ValueError:
            bot.sendmessage(message.chat.id, "you must enter an integer")
bot.polling()

a = random.randint(0,100)
a = guess_number.variable
también dice que la variable ‘a’,
que es una variable para el número secreto, está fuera del alcance en la función de guess_number.
Creo que la variable debería ser colocada en otro lugar, pero no puedo
descubrir exactamente dónde.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Puedes intentar mover la variable a fuera de la función guess_number, de la siguiente manera:

    import random
    import telebot
    from telebot.types import Message
    bot = telebot.TeleBot("-token-")
    
    a = random.randint(0,100)
    
    @bot.message_handler(commands = ('start'))
    def guess_number():
       guess_number.variable = a
    
    def send_welcome(message):
       bot.send_message(message.chat.id, "Ingresaste a un juego de adivinanza, viajero. Adivina un número del 0 al 100, o serás comido por un dragón.")
    
    @bot.message_handler(func=lambda message: True)
    def checking(message):
        try: 
            user_message = int(message.text)
            if user_message > guess_number.variable:
                bot.send_message(message.chat.id, "Tu número es mayor que el mío")
            elif user_message < guess_number.variable:
                bot.send_message(message.chat.id, "Tu número es menor que el mío")
            else:
                bot.send_message(message.chat.id, "Sí, ese es el número correcto")
        except ValueError:
                bot.send_message(message.chat.id, "Debes ingresar un número entero")
    
    bot.polling()
    

    De esta forma, la variable a será accesible en la función guess_number.

Comments are closed.