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

Discord机器人搜索优先发帖频道如何兼容特殊字符匹配关键词

Discord 加入服务器后按关键词匹配频道发消息实现

原有代码缺陷

  • 采用频道名精确匹配规则,频道名包含emoji、特殊Unicode字符、前后缀内容时会直接匹配失败
  • 使用裸except捕获所有异常,会吞掉权限不足、embed构建错误等关键报错,不利于排查问题
  • 重复调用接口获取频道对象,存在冗余逻辑

修改后实现方案

匹配逻辑调整为按预设关键词优先级做模糊包含匹配,只要频道名(不区分大小写)包含目标关键词,且机器人拥有该频道的发消息权限,就判定为命中目标频道,发送内容后终止遍历。

@bot.event
async def on_guild_join(guild):
    # 按优先级从高到低配置匹配关键词
    target_keywords = ['cool-channel', 'awesome-server', 'chatters-be-chatting']
    target_channel = None

    for keyword in target_keywords:
        for ch in guild.text_channels:
            # 统一转小写做包含判断,自动规避emoji、特殊字符、大小写差异带来的匹配失败问题
            if keyword.lower() in ch.name.lower():
                # 校验机器人在该频道的发消息权限
                if ch.permissions_for(guild.me).send_messages:
                    target_channel = ch
                    break
        if target_channel:
            break

    if target_channel:
        # 此处替换为你的embed构建逻辑
        # embed = discord.Embed(title="xxx", description="xxx")
        await target_channel.send(embed=embed)

匹配逻辑说明:Discord 文本频道的name属性会保留所有emoji、特殊Unicode字符,采用子串包含判断的方式,不需要额外处理特殊字符即可完成匹配,例如频道名为🎉cool-channel聊天区,会被关键词cool-channel正常命中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 23:09:58