这是我的代码:
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
我该如何修复此代码? 谢谢。
答案 0 :(得分:0)
cursor.fetchone()
返回一个列表或元组,即使该行只包含一件事。试试
prefix=cursor.fetchone()[0]