如何运行创建discord.py bot命令,该命令将使用不同的参数多次运行另一个bot命令?

时间:2019-06-15 22:10:40

标签: python discord discord.py

我有一个命令!出勤通道,其中channel是要读取的语音通道。然后,该漫游器会不一致地打印该频道中的成员列表。

我的问题是,是否有一种方法可以列出频道列表,并使机器人仅用1条命令就可以遍历每个通道。例如,执行!attendanceall并让漫游器将列表中的3个不同通道分配给!attendance命令。

我曾尝试过执行另一个命令并调用出勤命令,但这不起作用。

@bot.command(pass_context = True)
async def attendanceall(ctx):
    voice_list = ['channel1', 'channel2']
    for item in voice_list:
        attendance(item)

# the start of the attendance command if the variables matter
bot.command(pass_context = True)
async def attendance(ctx, channel : str = None, useDiscordID : bool = False):
    # the code that creates a list of all members goes here that isnt important
    # eventually I tell the bot to send the list of members
    await ctx.send(attendancelist)

我想有一个名为voice_list的固定列表,当使用!attendanceall命令ping到!attendance命令并为每个列表项运行该列表时。

1 个答案:

答案 0 :(得分:0)

最好将执行的逻辑与命令分开。因此,如果您有命令要在特定频道或所有频道上执行某些操作,则可能类似于:

@bot.command()
async def do_to_all(ctx):
    for channel in ctx.guild.channels:
        await do_thing(channel)

@bot.command()
async def do_for_channel(ctx, channel: discord.GuildChannel):
    await do_thing(channel)

async def do_thing(channel):
    ...