You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何使用discord.py rewrite创建类似MEE6的Urban Dictionary命令?

实现Discord.py Rewrite的Urban Dictionary命令

嘿,别发愁!我来帮你搞定这个类似MEE6的Urban Dictionary命令开发——其实有个公开可用的Urban Dictionary API,不需要申请密钥就能直接用,完美适配discord.py rewrite版本。下面是详细的实现步骤:

1. 先装必要依赖

确保你已经安装了discord.py(rewrite分支)和requests库,前者用来开发机器人,后者用来调用API:

pip install discord.py requests

2. 核心命令代码实现

这里是完整的可运行代码,已经帮你处理了API请求、结果解析和Discord消息展示,风格和MEE6的UD命令很像:

import discord
from discord.ext import commands
import requests

# 初始化机器人,前缀可以改成你喜欢的,比如'!'或者'/'
intents = discord.Intents.default()
intents.message_content = True  # 必须开启,否则收不到命令内容
bot = commands.Bot(command_prefix='!', intents=intents)

@bot.command(name='ud', help='查询Urban Dictionary上的词条定义,用法:!ud [要查的词]')
async def urban_dictionary(ctx, *, term: str):
    # 调用Urban Dictionary API获取数据
    api_response = requests.get(f"https://api.urbandictionary.com/v0/define", params={'term': term})
    data = api_response.json()

    # 检查有没有匹配的定义
    if not data['list']:
        await ctx.send(f"找不到关于`{term}`的定义哦😅")
        return

    # 取第一个结果(通常是点赞最多的热门定义)
    top_def = data['list'][0]

    # 用Embed构建消息,模仿MEE6的展示样式
    ud_embed = discord.Embed(title=f"📚 {term}", color=discord.Color.blurple())
    # 截断过长内容,避免超过Discord的字符限制(Embed字段最多1024字符)
    ud_embed.add_field(name="定义", value=top_def['definition'][:1024], inline=False)
    # 处理空例句的情况
    example_text = top_def['example'][:1024] if top_def['example'] else "暂无例句"
    ud_embed.add_field(name="例句", value=example_text, inline=False)
    ud_embed.set_footer(text=f"👍 {top_def['thumbs_up']} | 👎 {top_def['thumbs_down']}")

    await ctx.send(embed=ud_embed)

# 替换成你的机器人令牌,从Discord开发者后台获取
bot.run('YOUR_BOT_TOKEN_HERE')

3. 关键细节说明

  • API调用逻辑:这个API的define端点接受term参数,返回的JSON里list字段包含所有相关定义,我们取第一个是因为它通常是最受欢迎的(点赞最多)。
  • 内容长度限制:Discord的Embed每个字段最多支持1024字符,所以用[:1024]截断过长的定义和例句,防止发送失败。
  • 无结果处理:如果API返回的list是空数组,就给用户发送提示,避免机器人沉默。
  • 意图设置:一定要开启message_content意图,不然机器人接收不到用户输入的命令内容,这个需要在代码里设置,同时在Discord开发者后台的机器人页面开启。

4. 扩展功能建议

如果想让命令更像MEE6,你还可以加这些功能:

  • 支持用户指定查看第N个定义,比如!ud python 2来查看第二个结果
  • 添加随机词条命令,调用https://api.urbandictionary.com/v0/random端点就能获取随机定义
  • 给过长的定义添加截断提示,引导用户了解完整内容

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

火山引擎 最新活动