【问题标题】:Sending a message after a ban/kick command在禁止/踢命令后发送消息
【发布时间】:2019-10-17 11:59:02
【问题描述】:

我正在设置一个不和谐的机器人,我想让机器人在“ban”和“kick”命令之后发送确认或错误消息,有人可以帮忙吗?

我尝试用相同的参数创建另一个单独的命令,只是让它发送预期的消息。

@client.event
async def on_ready():
    print('Bot is ready!')

@client.event
async def on_member_join(ctx, member):
    print(f'{member} has joined {ctx.guild.name}.')

@client.event
async def on_member_remove(ctx, member):
    print(f'{member} has left {ctx.guild.name}.')

@client.event
async def on_member_join(member):
    role = discord.utils.get(member.server.roles, name="Member")
    await client.add_roles(member, role)

@client.command()
async def ping(ctx):
    await ctx.send(f'Pong! :ping_pong: **{round(client.latency * 1000)}ms** ')

@client.command()
async def purge(ctx, amount):
    await ctx.channel.purge(limit=amount)
    await ctx.send(f'{member.display_name} has been kicked.')

@client.command()
async def kick(ctx, member : discord.Member, *, reason=None):
    await member.kick(reason=reason)
    await ctx.send(f'{member.display_name} has been kicked.'')

@client.command()
async def ban(ctx, member : discord.Member, *, reason=None):
    await member.ban(reason=reason)
    await ctx.send(f'The Ban Hammer has Spoken! {member.display_name} has been banned!')

@client.command()
async def pardon(ctx, *, member):
    banned_users = await ctx.guild.bans()
    member_name, member_discriminator = member.split('#')

    for ban_entry in banned_users:
        user = ban_entry.banned_users

        if (user.name, user.discriminator) == (member_name, member_discriminator):
            await ctx.guild.unban(user)
            await ctx.send(f'Unbanned {member.display_name}')

实际上,我认为这会很棒,因为它们相互冲突并且可能会发送一条消息,但它出错了。

【问题讨论】:

  • 我不确定我是否理解.. 你知道你可以在函数中有多个行吗?因此,例如在禁令功能中,您可以拥有第一行 await member.ban(reason=reason) 和第二行 await ctx.send(f'{member.display_name} has been banned!')
  • 我试过这样的代码,bot程序现在甚至没有启动。
  • 编辑您的帖子,以便我们查看问题。
  • 不要重新定义函数。不要定义ban() 两次,而是定义一次并让它同时调用await member.ban()await ctx.send(...)

标签: discord discord.py discord.py-rewrite


【解决方案1】:

在 kick 命令的末尾删除最后一个 '.还有{member.name}{member}

【讨论】:

    猜你喜欢
    • 2020-11-18
    • 2020-10-20
    • 2022-07-16
    • 1970-01-01
    • 2019-07-23
    • 1970-01-01
    • 2019-02-27
    • 2021-05-11
    • 1970-01-01
    相关资源
    最近更新 更多