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

Discord工单系统开发:修复sqlite3.ProgrammingError参数类型不支持问题

Discord工单系统SQLite查询报错修复

问题根源

你的代码存在两个核心问题,导致了sqlite3.ProgrammingError: parameters are of unsupported type错误:

  1. 错误的Guild对象引用:guild = discord.Guild是直接赋值类本身,而非实际的服务器实例。此时guild.id是类属性,不是真实的服务器ID数值,SQLite无法识别该类型。
  2. 参数元组格式错误:SQL执行时,单元素参数需要写成(值,)的元组格式,你写的(guild.id)会被解析为单个值而非元组,导致参数传递失败。

修复后的代码示例

首先要确保获取到真实的Guild实例,比如通过Discord.py的事件或命令上下文获取,以下是修正后的代码:

import sqlite3
import discord
from discord.ext import commands

bot = commands.Bot(command_prefix='!', intents=discord.Intents.all())

@bot.event
async def on_ready():
    conn1 = sqlite3.connect('user.sqlite')
    cur1 = conn1.cursor()
    conn2 = sqlite3.connect('setup.sqlite')
    cur2 = conn2.cursor()

    # 创建ticket表(如果不存在)
    cur1.execute("""CREATE TABLE IF NOT EXISTS ticket 
               (id INTEGER PRIMARY KEY AUTOINCREMENT, discord_name TEXT, discord_id INTEGER, ticket_created TIMESTAMP DEFAULT CURRENT_TIMESTAMP)""")
    conn1.commit()

    # 获取真实的Guild实例(示例:通过ID获取,或者从命令上下文ctx.guild获取)
    # 替换成你的目标服务器ID
    target_guild_id = 123456789012345678
    guild = bot.get_guild(target_guild_id)

    if guild:
        # 修复参数元组格式,添加逗号确保是元组类型
        cur2.execute("SELECT guild_id FROM setup WHERE guild_id = ?", (guild.id,))
        # 获取查询结果
        GUILD_ID = cur2.fetchone()
        if GUILD_ID:
            print(f"获取到的服务器ID: {GUILD_ID[0]}")
        else:
            print("该服务器ID未在setup表中找到")
    else:
        print("无法找到指定服务器")

    # 关闭数据库连接
    conn1.close()
    conn2.close()

bot.run('你的Bot令牌')

原setup表结构

CREATE TABLE "setup" (
    "guild_id"  NUMERIC,
    "ticket_channel_id" NUMERIC,
    "category_id_1" NUMERIC,
    "category_id_2" NUMERIC,
    "team_role_id_1"    NUMERIC,
    "team_role_id_2"    NUMERIC,
    "log_channel_id"    NUMERIC,
    "timezone"  TEXT
);

原报错信息

parameters are of unsupported type
File "C:\Users\My name\Documents\Bot\ticket_system.py", line 23, in
GUILD_ID = cur2.execute("SELECT guild_id FROM setup WHERE guild_id = ?", (guild.id))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\My name\Documents\Bot\Bot.py", line 20, in
from ticket_system import Ticket_System
sqlite3.ProgrammingError: parameters are of unsupported type

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 15:50:32