有什么方法可以在没有服务器发出消息的情况下获取服务器ID?

时间:2019-03-24 20:22:27

标签: python-3.x discord.py

我正在尝试创建一个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

是否可以在不使用异步中实际队列的情况下在我的方法中执行此队列操作?因为我希望这是可行的,并且在一台服务器的情况下也可以使用,所以必须有一种将其推广的方法

1 个答案:

答案 0 :(得分:0)

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

queues = {}

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