【问题标题】:Discord Bot Python - Passing Unknown Amount of ArgumentsDiscord Bot Python - 传递未知数量的参数
【发布时间】:2018-03-31 01:05:54
【问题描述】:

目前正在搞乱 Discord.py Bot,我正在努力将多个未知值传递给这个函数。在此示例中,我允许用户添加多个数字,但我不知道它是否是 200 个数字中的 2 个数字。

使用下面的代码,我得到了一个似乎无法迭代的类对象(discord.ext.commands.context.Context 对象位于 0x032AAB10)。

我的类从以下代码中的 Music 类继承,https://github.com/Rapptz/discord.py/blob/async/examples/playlist.py

class John_Bot(Music):

    @commands.command(pass_context=True, no_pm=True)
    async def add(self, *nums):
        result = 0
        for num in nums:
            try:
                result += num
            except:
                await self.bot.say("Numbers only please")
                break
        await self.bot.say("{} = {}".format((' + '.join(map(str, list(nums)))), result))

如何从这个对象中取出变量?很可能我做了一些愚蠢的事情或没有完全理解我在做什么,所以提前道歉:D

谢谢, 约翰

【问题讨论】:

  • 可能因为pass_contextTrue,你的第一个“数字”实际上是不和谐的上下文,而不是输入的人的数字。如果你将pass_context 设置为False,会发生什么?
  • 问题解决了!如果您将其作为解决方案,我会将其标记为:D
  • 嗯,这是一个随机的猜测。很高兴能提供帮助。

标签: python object parameter-passing discord discord.py


【解决方案1】:

您请求将上下文传递给您的函数,这将成为*nums 中的第一个参数。只需将pass_context 设置为False,或将函数签名更改为async def add(self, ctxt, *nums)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多