首页 > 解决方案 > 有没有办法在没有来自服务器的消息的情况下获取服务器的 ID?

问题描述

我正在尝试创建一个 python 音乐机器人,它可以为每个服务器选择歌曲队列,它可以工作,但唯一的问题是队列是所有服务器的一个(“队列”实际上是一个列表)。

所以我想“好的,我将创建一个字典,其中键是服务器的 id,值是队列”但是这样做是有问题的,因为如果我在 on_message 函数上更改队列,它会在每条消息上更改它到每个想要获取有关队列的信息的服务器,这使得整个事情变得毫无价值。

这是我提到的东西-我不会添加更多来使问题变得混乱,因为这并不重要

queues = {}
queue = []
async def on_message(ctx):
    server = ctx.server
    id = server.id
    queues[id] = queue  # this is where I want to create an empty queue for every server so it shouldn't be here

有没有办法在我的方法中做这个队列的事情而不使用来自异步的实际队列?因为我希望这是可能的,并且它适用于一台服务器,所以必须有一种方法来概括这一点

标签: python-3.xdiscord.py

解决方案


在您的on_ready事件中,您可以初始化服务器 ID 到空列表的映射:

queues = {}

@bot.event
async def on_ready():
    for server in bot.servers:
        queues[server.id] = []

推荐阅读