【问题标题】:Python Random choice result in discord.pyPython 随机选择导致 discord.py
【发布时间】:2018-08-26 23:08:19
【问题描述】:

如何使以下代码在不和谐频道中工作。使用命令时输出应在不和谐频道中。

colours = {'red', 'blue', 'green', 'yellow', 'black', 'purple',
           'Brown', 'Orange', 'violet', 'gray'}
for n in [5]:
    cs = random.sample(colours, k=n)
    colours -= set(cs)
    print(cs)

【问题讨论】:

    标签: python-3.x discord.py


    【解决方案1】:

    这是工作代码

    @bot.command(pass_context=True)  
    async def pick(ctx):
      colours_copy = colours.copy()
      for n in [1, 2, 3]:
          cs = random.sample(colours_copy , k=n)
          colours_copy -= set(cs)
          await bot.send_message(ctx.message.channel, "{}\n".format(", ".join(cs)))
    

    如果你每次有人跑!pick时都从颜色中减去集合,你会很快用完颜色

    相反,您可以在函数内复制您的集合,这样即使您在执行过程中从中减去,原始集合也将始终作为参考存在

    “使用命令时输出应该在不和谐频道中!选择”
    您可以更改命令名称(当前为pick

    【讨论】:

    • 替换为`await bot.send_message(ctx.message.channel, "Line {} >{}\n".format(str(n),", ".join(cs)) )`
    • 所以你添加自定义消息而不是“第 1 行”?取决于您要添加的内容
    • 有几种方法可以做到这一点,你可以有一个 3 个人的数组,每次打印颜色时使用 pop() 从数组中删除最后一个
    • await client.send_message(ctx.message.channel, "{}\n".format(f" Line {n} > " + ", ".join(cs)))
    • for n in [1, 2, 3]: 上方放置counter =0 ,在其下方放置counter += 1,而不是在我写的最后一件事中放置{n},放置{counter}
    【解决方案2】:
    @client.event
        async def on_message(message):
            if message.content.upper() == ".CHOOSE":
    
                # Your code here
    
                await client.send_message(message.channel, "> {}\n".format(", ".join(cs)))
    

    应该让机器人将输出在控制台中的外观发送到使用命令的相应通道。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-12
      • 1970-01-01
      • 1970-01-01
      • 2012-05-11
      • 2011-01-01
      • 2014-04-23
      • 2019-05-05
      • 1970-01-01
      相关资源
      最近更新 更多