如何使用discord.py使命令仅在特定频道中工作

时间:2021-04-06 11:18:28

标签: python json discord discord.py

目前我正在使用

vouch_channel = client.get_channel(828696942250295316)

@client.command()
async def vouch(message):
  async def vouch(ctx,member : discord.Member):

    if ctx.author == member:
        await ctx.send("You can't vouch yourself")

       
      if message.channel.id == vouch_channel.id:


        auth = ctx.author and ctx.author.mention and ctx.author.id
        await open_vouches(ctx.author)
        await open_vouches(member)



        await update_vouches(member,+1,'vouches_gotten')
        await update_vouches(ctx.author,+1,'vouches_given')      
        await ctx.reply(f'<:icon_checkmark:827639277285408829> {ctx.author.mention} You vouched for {member}!')
       print('[LOGS] bot was used for vouch')



      else:
            #command attempted in non command channel - redirect user
            await message.channel.send('Write this command in {}'.format(vouch_channel.mention))

尝试这样做,我尝试改变周围的事物,但没有奏效。

我真的不知道该怎么办

我也在做黑社会

@client.command()
async def vouch(message,ctx,member : discord.member):

而不是做我在那里做过的事情,我也尝试过

@client.command()
async def vouch(message)(ctx,member : discord.member):

但这也没有用。

请帮帮我

1 个答案:

答案 0 :(得分:0)

乍一看,您的函数中的参数顺序似乎已关闭。如果您不使用 cog,则 ctx 应该是要传递的第一个参数。 您可能还会遇到多字消息的问题,因此您可以使用 * 参数表示“传递的第二个参数之后的所有内容都是消息的一部分”。

试试下面的代码。您可以按如下方式使用该命令:!vouch @Kelo This is my message

@client.command()
async def vouch(ctx, member : discord.Member, *, message):
  if ctx.author == member:
    await ctx.send("You can't vouch yourself")
    return
  elif ctx.channel.id != 828696942250295316:
    await ctx.send("You can't vouch in this channel")
    return
  
  #Rest of your code