Python 如何使用discord.py使此命令仅在多个通道中工作

Python 如何使用discord.py使此命令仅在多个通道中工作,python,json,discord,discord.py,Python,Json,Discord,Discord.py,我试图使一个命令在两个交易渠道工作,因为它是为了检查人们的担保,看看他们是否值得信赖。我当前的代码不起作用,但它在这里 @client.command() async def vouches(ctx, member : discord.User=None): if None == member: await open_vouches(ctx.author) user = ctx.author users = await get_vouch_data()

我试图使一个命令在两个交易渠道工作,因为它是为了检查人们的担保,看看他们是否值得信赖。我当前的代码不起作用,但它在这里

@client.command()
async def vouches(ctx, member : discord.User=None):
  if None == member:
  
    await open_vouches(ctx.author)
    user = ctx.author

    users = await get_vouch_data()

    vouches_given = users[str(user.id)]["vouches_given"]
    vouches_gotten = users[str(user.id)]["vouches_gotten"]

    embed = discord.Embed(title='Trade vouches!',color=0x1d9521)
    embed.add_field(name='Vouches Gotten✨',value=vouches_gotten, inline=False)    
    embed.add_field(name="Vouches GivenFirst of all - you have to first check the channels. In the comments you mentioned you don't pass a member as an argument when testing, meaning that that part of the code is never reached as 
member
is always
None
so it gets into the first
if
.

@client.command()
async def vouches(ctx, member : discord.User=None):
    allowed_channels = [813832766248583199, 813832801220689931]

    # Check channels FIRST
    if ctx.channel.id not in allowed_channels:
        return await ctx.send("You can't vouch in this channel")
@client.command()
异步定义凭证(ctx,成员:discord.User=None):
如果无==成员:
等待公开担保(ctx.作者)
user=ctx.author
用户=等待获取凭证数据()
vouches\u given=用户[str(user.id)][“vouches\u given”]
vouches\u get=users[str(user.id)][“vouches\u get”]
embed=discord.embed(title='Trade-vouches!',color=0x1d9521)
嵌入.add_字段(name=)✨',值=凭证(已获取,内联=假)

embed.add_field(name=“Vouches Given首先-您必须先检查频道。在您提到的注释中,您在测试时没有将成员作为参数传递,这意味着该部分代码永远不会到达,因为
成员始终是
,因此如果
,它将进入第一个

@client.command()
异步定义凭证(ctx,成员:discord.User=None):
允许的_通道=[813832766248583199813832801220689931]
#先检查频道
如果ctx.channel.id不在允许的\u通道中:
return wait ctx.send(“您不能在此频道进行担保”)
另外,
无检查应使用
is
,而不是
=
完成

elif成员为无:
...
注:这没有错,但是如果上面的
if语句使用
return
s,那么使用
elif
是不必要的。如果输入了上述
if/elif
,函数
return
s,那么无论如何都无法到达下面的
elif


< > <代码>成员的代码是“没有< /代码>,<代码>成员不是没有< /代码>,使用不同的<代码> USERID <代码>完全相同,只考虑用<代码> ID <代码>创建一个变量,或者创建一个函数,而不是复制代码块。"这对我们帮助您没有多大帮助。有错误吗?有什么奇怪的行为吗?尝试过调试打印以查看代码的哪些部分&哪些部分您没有?它甚至没有尝试工作,因为它只是被忽略了,而且命令仍然在运行。显示您正在使用该命令吗?i'm do=vouches,它会告诉一个人他们有多少个vouches如果你这样做,那么
成员总是
,因为你没有通过一个,它将进入你的第一个
,如果
,而不是在下面检查频道id的位置。