尝试使用 sqlite3 向我的 discord.py 机器人添加自定义前缀

Posted

技术标签:

【中文标题】尝试使用 sqlite3 向我的 discord.py 机器人添加自定义前缀【英文标题】:Trying to add custom prefixes to my discord.py bot using sqlite3 【发布时间】:2021-06-15 08:53:38 【问题描述】:

这是我的代码:

def get_prefix(bot, message):
    cursor.execute('SELECT prefix FROM prefijos WHERE id = ?', (message.guild.id,))
    prefix = cursor.fetchone()
    db.commit()
    return when_mentioned_or(prefix)(bot, message)

bot = commands.Bot(command_prefix=get_prefix)

但是这段代码没有按预期工作。只有当我提到机器人时它才有效,但没有自定义前缀。正如我所说,我使用 sqlite3 作为存储前缀的数据库。

我遇到的错误(当我使用前缀时)是这样的:

    raise TypeError("Iterable command_prefix or list returned from get_prefix must "
TypeError: Iterable command_prefix or list returned from get_prefix must contain only strings, not tuple

如果我从“cursor.execute...”部分删除逗号,则会出现此错误(这是来自 sqlite 的错误)

    cursor.execute('SELECT prefix FROM prefijos WHERE id = ?', (message.guild.id))
ValueError: parameters are of unsupported type

如何修复此代码? 谢谢。

【问题讨论】:

【参考方案1】:

cursor.fetchone() 返回一个列表或元组,即使该行只包含一件事。试试

prefix=cursor.fetchone()[0]

【讨论】:

以上是关于尝试使用 sqlite3 向我的 discord.py 机器人添加自定义前缀的主要内容,如果未能解决你的问题,请参考以下文章

Discord.py SQLite3 禁用词系统 - 问题

我的 discord.js 机器人的 sql 没有/不能从我的 sqlite3 db 定义一个表

我无法使用 discord.py 向我的 discord 机器人添加命令

如何让 Discord 机器人向我 ping 的人发送 DM?

在 Sqlite 中使用 WHERE NOT EXISTS 返回语法错误

如何在 discord.py 中将 on_message 与 sqlite3 集成?