如何为Pycord机器人搭建数据库?求SQLite存字符串示例
Pycord Bot 实现字符串存入SQLite数据库的命令示例
下面是一个完整的实现示例,包含数据库初始化、命令编写和基本的错误处理:
import discord from discord.ext import commands import sqlite3 from datetime import datetime # 初始化Bot,设置命令前缀 bot = commands.Bot(command_prefix="!", intents=discord.Intents.default()) # 数据库初始化函数 def init_db(): conn = sqlite3.connect("bot_database.db") cursor = conn.cursor() # 创建存储字符串的表,包含自增ID、用户ID、字符串内容、创建时间 cursor.execute(''' CREATE TABLE IF NOT EXISTS user_strings ( id INTEGER PRIMARY KEY AUTOINCREMENT, user_id INTEGER NOT NULL, content TEXT NOT NULL, created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ) ''') conn.commit() conn.close() # Bot启动时初始化数据库 @bot.event async def on_ready(): init_db() print(f"已登录为 {bot.user},数据库初始化完成") # 存入字符串的命令 @bot.command(name="save_string") async def save_string(ctx, *, content: str): try: # 连接数据库 conn = sqlite3.connect("bot_database.db") cursor = conn.cursor() # 插入数据:用户ID、字符串内容 cursor.execute(''' INSERT INTO user_strings (user_id, content) VALUES (?, ?) ''', (ctx.author.id, content)) conn.commit() await ctx.send(f"已成功保存你的字符串:`{content}`") except Exception as e: await ctx.send(f"保存失败:{str(e)}") finally: # 确保数据库连接关闭 if conn: conn.close() # 运行Bot,替换成你的Token bot.run("YOUR_BOT_TOKEN_HERE")
关键部分说明
- 数据库初始化:
init_db函数在Bot启动时执行,自动创建user_strings表,避免手动建表的麻烦。 - 命令参数设计:使用
*, content: str可以接收用户输入的整段字符串(包含空格),不用限制输入内容的长度(只要SQLite支持)。 - 安全的数据插入:用
?占位符传递参数,避免SQL注入攻击,这是操作数据库的最佳实践。 - 异常与资源管理:通过
try-except-finally捕获错误并反馈给用户,同时确保数据库连接无论成功失败都会被关闭,防止资源泄漏。
使用方法
- 替换代码中的
YOUR_BOT_TOKEN_HERE为你的Discord Bot Token。 - 运行脚本,Bot上线后,在Discord聊天中发送
!save_string 你的字符串内容即可完成存储。
你可以根据需求修改表结构,比如添加字符串分类、过期时间等字段,或者扩展查询、删除等配套命令。
内容的提问来源于stack exchange,提问作者SniperMonke
相关产品推荐
相关产品推荐

