You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Discord.py获取提及成员的所有角色并发送至频道?

实现Discord.py获取被提及成员角色并发送至指定频道的解决方案

我来帮你补全这个softban命令的代码,刚好能实现你想要的获取目标成员角色并发送到指定频道的功能。下面是完整的实现方案:

完整代码示例

@client.command()
@commands.has_role("Enhanced Permissions")
async def softban(ctx, user: discord.Member, target_channel: discord.TextChannel):
    # 过滤掉默认的@everyone角色,只保留用户的自定义角色
    user_roles = [role for role in user.roles if role.name != "@everyone"]
    
    # 处理用户无额外角色的情况
    if not user_roles:
        await ctx.send(f"{user.mention} 没有任何自定义角色。")
        return
    
    # 把角色列表格式化成易读的文本,这里用了角色提及(可点击)
    role_list = "\n".join([role.mention for role in user_roles])
    
    # 发送角色信息到指定频道
    await target_channel.send(f"成员 {user.mention} 的所有角色:\n{role_list}")
    
    # 给命令发起者反馈操作结果
    await ctx.send(f"已将 {user.mention} 的角色信息发送到 {target_channel.mention}")

代码细节解释

  • 角色过滤:用列表推导式排除了默认的@everyone角色,避免无关信息干扰。
  • 空角色处理:如果目标用户只有默认角色,会在命令执行频道给出提示,不会发送空内容到目标频道。
  • 格式化展示:这里使用了角色的mention属性,发送后在频道里会显示可点击的角色链接;如果只需要纯名称展示,把role.mention改成role.name即可。
  • 频道参数:通过命令参数让你直接在执行命令时提及频道或输入频道ID,比如输入!softban @测试用户 #日志频道就能触发操作。

可选优化:固定目标频道

如果你想让命令固定发送到某个特定频道(不用每次输入频道参数),可以修改成下面的版本:

@client.command()
@commands.has_role("Enhanced Permissions")
async def softban(ctx, user: discord.Member):
    # 替换成你实际需要的频道ID
    target_channel_id = 123456789012345678
    target_channel = client.get_channel(target_channel_id)
    
    # 检查频道是否存在
    if not target_channel:
        await ctx.send("目标频道不存在,请检查频道ID是否正确。")
        return
    
    # 角色处理逻辑和之前一致
    user_roles = [role for role in user.roles if role.name != "@everyone"]
    if not user_roles:
        await ctx.send(f"{user.mention} 没有任何自定义角色。")
        return
    
    role_list = "\n".join([role.mention for role in user_roles])
    await target_channel.send(f"成员 {user.mention} 的所有角色:\n{role_list}")
    await ctx.send(f"已将 {user.mention} 的角色信息发送到指定频道。")

另外记得给机器人配置好目标频道的发送消息权限,如果担心权限问题,可以在代码里添加try-except块捕获异常,让命令更健壮。

内容的提问来源于stack exchange,提问作者jwjw2069

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 13:32:47