【问题标题】:Number Guessing Game with discord.py rewrite用 discord.py 重写的数字猜谜游戏
【发布时间】:2021-05-16 15:16:35
【问题描述】:

我试过这段代码,机器人说猜测,但没有回应我的猜测。

@commands.command()
async def game(self, ctx):
    number = random.randint(0, 100)
    for guess in range(0, 5):
        await ctx.send('guess')
        Message = await bot.wait_for('message')
        Message = int(Message)
        if Message.cleant_content > number:
            await ctx.send('bigger')
        elif Message.cleant_content < number:
            await ctx.send('smaller')
        else:
            await ctx.send('true')

【问题讨论】:

    标签: discord.py discord.py-rewrite


    【解决方案1】:

    因为您使用的是 cogs,所以我想您已经将您的机器人初始化为 self.bot 而不仅仅是 bot

    此外,您正在将消息 object 转换为整数,并尝试访问名为 cleant_content 的整数的属性。

    你的代码应该是这样的:

    @commands.command()
    async def game(self, ctx):
        number = random.randint(0, 100)
        for i in range(0, 5):
            await ctx.send('guess')
            response = await self.bot.wait_for('message')
            guess = int(response.content)
            if guess > number:
                await ctx.send('bigger')
            elif guess < number:
                await ctx.send('smaller')
            else:
                await ctx.send('true')
    

    为了便于阅读,我还更改了一些变量名称。如果你愿意,你可以添加一些检查来检查他们的猜测是否真的是一个数字。

    此外,我将原本应为 clean_content 的内容更改为 content,因为 clean_content 完全没有其用途,因为您无法转换 &lt;@#、@ 987654334@、&gt; 等为整数,这意味着无论哪种方式都会出错。我希望这是有道理的。


    参考资料:

    【讨论】:

    • @musta21 很高兴听到这个消息!祝你机器人的其余部分好运:^)
    【解决方案2】:

    这是另一种方式:

    @bot.command()
    async def game(ctx, *, number=0):
      number_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
      correct_number = random.choice(number_list)
    
      if number == correct_number:
        embedVar = discord.Embed(title=f'Your Number Is {number}', color=0xFF0000)
        embedVar.add_field(name='You Picked The Correct Number! You Won', value="Thanks For Playing!")
        await ctx.send(embed=embedVar)
      
      else:
        embedVar = discord.Embed(title=f'Your Number Is {number}', color=0xFF0000)
        embedVar.add_field(name="Sorry, You Picked The Wrong Number", value="Thanks For Playing")
        await ctx.send(embed=embedVar)
    

    【讨论】:

      【解决方案3】:

      我的猜测命令是这样的:

      @bot.command()
      async def guess(ctx):
      
      await ctx.send("Guess the number from 1 to 10!")
      
      numbers = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"]
      choice = random.choice(numbers)
      
      answer = await bot.wait_for("message")
      
      if answer.content == choice:
          await ctx.send("You guessed the correct number!")
      else:
          await ctx.send(f"You lost! The number was {choice}")
      

      【讨论】:

        猜你喜欢
        • 2021-07-25
        • 1970-01-01
        • 2021-08-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多