尝试使用 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
返回的id
是int
类型,可以在documentation 中看到,但它在MongoDB 中存储为字符串。
您可以将 ID 转换为过滤器中的字符串,如下所示:collection.find("Guild ID": str(message.guild.id))
或者您可以更新文档以将 ID 存储为 int
,因此无需进行转换。
【讨论】:
以上是关于尝试使用 MongoDB 检索公会前缀的主要内容,如果未能解决你的问题,请参考以下文章
mongodb 不会启动 mongod -> 错误 dbpath 不存在,但路径确实退出
更新公会的前缀不需要完全重新启动才能应用,但出于某种原因将新公会添加到我的数据库中确实如此