尝试使用 MongoDB 检索公会前缀

Posted

技术标签:

【中文标题】尝试使用 MongoDB 检索公会前缀【英文标题】:Trying to retrieve guild prefix with MongoDB 【发布时间】:2021-10-17 15:26:00 【问题描述】:

我正在尝试使用我的 discord.py 机器人设置 MongoDB。我可以连接,但是当我定义 command_prefix 时,我无法检索公会前缀。

我当前的代码是:

import discord
from discord.ext import commands
import pymongo
from pymongo import MongoClient

cluster = MongoClient("url im not showing")
db = cluster["Cluster0"]
collection = db["Guild Prefixes"]

def get_prefix(bot, message):
    for x in collection.find("Guild ID": message.guild.id):
        prefix = x["Prefix"]
    return prefix

client = commands.Bot(command_prefix=get_prefix, intents=discord.Intents.all(), case_insensitive=True)

我收到以下错误:

File "c:\Users\colee\Documents\GitHub\Guard\bot.py", line 11, in get_prefix
    return prefix
UnboundLocalError: local variable 'prefix' referenced before assignment

我当前的表格如下:

我该如何解决这个错误?

【问题讨论】:

【参考方案1】:

看起来从message.guild.id 返回的idint 类型,可以在documentation 中看到,但它在MongoDB 中存储为字符串。

您可以将 ID 转换为过滤器中的字符串,如下所示:collection.find("Guild ID": str(message.guild.id))

或者您可以更新文档以将 ID 存储为 int,因此无需进行转换。

【讨论】:

以上是关于尝试使用 MongoDB 检索公会前缀的主要内容,如果未能解决你的问题,请参考以下文章

mongodb 不会启动 mongod -> 错误 dbpath 不存在,但路径确实退出

更新公会的前缀不需要完全重新启动才能应用,但出于某种原因将新公会添加到我的数据库中确实如此

MongoDB尝试

安装完MongoDB后尝试mongod -dbpath命令为什么会一直卡在连接端口?

discord.py前缀命令[关闭]

无法运行mongod:致命断言28562