如何在Discord Python机器人中接入动漫角色数据库API实现查询功能
Discord Python 机器人接入动漫角色搜索API教程
前置准备
首先安装所需依赖:
pip install discord.py requests
核心逻辑说明
你提到的API通过GET请求调用,传入character_q参数作为搜索的角色名,返回JSON格式的角色匹配结果。调用时需要自定义User-Agent头,避免被接口拦截返回403错误。
完整实现代码示例
import discord from discord import app_commands import requests # 配置机器人客户端 intents = discord.Intents.default() client = discord.Client(intents=intents) tree = app_commands.CommandTree(client) # 动漫角色搜索函数 def search_anime_character(keyword: str): api_url = "https://www.animecharactersdatabase.com/api_series_characters.php" headers = { "User-Agent": "DiscordBot/1.0 (自定义你的标识即可)" } params = { "character_q": keyword } try: resp = requests.get(api_url, headers=headers, params=params, timeout=10) resp.raise_for_status() return resp.json() except Exception as e: print(f"调用API出错: {e}") return None # 注册斜杠指令 @tree.command(name="charsearch", description="搜索动漫角色信息") async def charsearch(interaction: discord.Interaction, 关键词: str): await interaction.response.defer() # 延迟回复避免超时 result = search_anime_character(关键词) if not result or not result.get("characters"): await interaction.followup.send("没有找到匹配的动漫角色") return # 取第一个匹配的角色展示,可根据需要修改为列表展示 char = result["characters"][0] embed = discord.Embed(title=char["name"], description=char["desc"], color=discord.Color.blue()) embed.set_thumbnail(url=char["image"]) embed.add_field(name="所属作品", value=char["anime_name"], inline=False) await interaction.followup.send(embed=embed) @client.event async def on_ready(): await tree.sync() # 同步指令到Discord print(f"机器人已登录: {client.user}") # 替换为你自己的机器人令牌 client.run("YOUR_BOT_TOKEN")
注意事项
- 请将代码中的
YOUR_BOT_TOKEN替换为你在Discord开发者平台申请的机器人令牌,User-Agent字段也建议修改为你自己的专属标识 - 可以给指令添加冷却机制,避免短时间内大量调用API被限流,可通过
@app_commands.checks.cooldown(1, 5.0, key=lambda i: i.user.id)实现每5秒每个用户只能调用一次的限制 - 接口返回的角色信息包含更多字段,你可以根据需求调整Embed展示的内容
内容的提问来源于stack exchange,提问作者Ary Arwin
相关产品推荐
相关产品推荐

