【发布时间】:2021-02-15 11:25:12
【问题描述】:
我有一个使用 discord.py 和 mysql 的不和谐机器人,我目前每次发送消息时都在加载公会前缀:
@client.event
async def on_message(message):
cursor = mydb.cursor()
cursor.execute(f"SELECT prefix FROM servers WHERE guild = {message.guild.id}")
prefix = cursor.fetchone()[0]
问题是机器人变得越来越大,而且也很滞后。所以我想在机器人启动时加载所有前缀,在 on_ready() 事件上。使用 discord.js,它会是这样的:
const guildPrefixes = new Map();
client.on('ready', () => {
client.guilds.cache.forEach(guild => {
connection.query(
`SELECT prefix FROM servers WHERE guild = '${guild.id}'`
).then(result => {
guildPrefixes.set(guild.id, result[0][0].prefix);
}).catch(err => console.log(err));
});
});
client.on('message', async (message) => {
const prefix = guildPrefixes.get(message.guild.id);
// code here...
});
我如何使用 discord.py 做到这一点? 提前谢谢你。
【问题讨论】:
-
你有公会特定的前缀吗?
on_ready()不会有公会。 -
我认为我将不得不使用
for guild in client.guilds之类的东西,然后为每个公会保存前缀。我只是不知道如何在python中做到这一点。在 js 中我可以使用 Map()
标签: python discord.py