【问题标题】:Discord.py How to make a command happen a set amount of timesDiscord.py 如何使命令发生一定次数
【发布时间】:2021-07-25 05:23:48
【问题描述】:

所以我目前正在制作一个名为 tornado 的有趣命令,它可以让用户在一堆语音通道中移动。我想要做的是发出命令 >tornado @Blah#1234 5 并让它们在返回到语音通道 0 之前通过 6 个语音通道 5 次(初始语音渠道)。到目前为止,我能够指挥 >tornado @Blah#1234 并且它们通过 6 个语音通道移动一次,然后返回到它们原来的语音通道。任何帮助表示赞赏!

@bot.command(pass_context=True)
async def tornado(ctx, member: discord.Member):
  voice1 = bot.get_channel(824745972768702525)
  voice2 = bot.get_channel(729916324272144439)
  voice3 = bot.get_channel(729927718296223839)
  voice4 = bot.get_channel(775807325641375744)
  voice5 = bot.get_channel(729958198957834290)
  voice6 = bot.get_channel(729958233669632020)
  voice0 = member.voice.channel
  await member.move_to(voice1) ; sleep(0.1)
  await member.move_to(voice2) ; sleep(0.1)
  await member.move_to(voice3) ; sleep(0.1)
  await member.move_to(voice4) ; sleep(0.1)
  await member.move_to(voice5) ; sleep(0.1)
  await member.move_to(voice6) ; sleep(0.1)
  await member.move_to(voice0)

【问题讨论】:

    标签: python discord discord.py


    【解决方案1】:

    您可以通过一个非常简单的for 循环来做到这一点。这是一个例子:

    @bot.command(pass_context=True)
    async def tornado(ctx, member: discord.Member):
        voice1 = bot.get_channel(824745972768702525)
        voice2 = bot.get_channel(729916324272144439)
        voice3 = bot.get_channel(729927718296223839)
        voice4 = bot.get_channel(775807325641375744)
        voice5 = bot.get_channel(729958198957834290)
        voice6 = bot.get_channel(729958233669632020)
        voice0 = member.voice.channel
        for i in range(5):
            await member.move_to(voice1) ; sleep(0.1)
            await member.move_to(voice2) ; sleep(0.1)
            await member.move_to(voice3) ; sleep(0.1)
            await member.move_to(voice4) ; sleep(0.1)
            await member.move_to(voice5) ; sleep(0.1)
            await member.move_to(voice6) ; sleep(0.1)
        await member.move_to(voice0)
    

    但是还有一个更简单的方法:

    @bot.command(pass_context=True)
    async def tornado(ctx, member: discord.Member):
        voices = [
            824745972768702525,
            729916324272144439,
            729927718296223839,
            775807325641375744,
            729958198957834290,
            729958233669632020,
        ]
        voice0 = member.voice.channel
        for i in range(5):
            for voice in voices:
                await member.move_to(bot.get_channel(voice)
                sleep(0.1)
        await member.move_to(voice0)
    

    我所做的只是将成员移动通过voices 列表中的所有语音通道(第二个for 循环),5 次(第一个for 循环)。最后,让他回到原来的语音频道。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-07
      • 2021-11-18
      • 1970-01-01
      • 1970-01-01
      • 2021-01-13
      • 2021-11-10
      相关资源
      最近更新 更多