python-3.x - 有没有办法在没有来自服务器的消息的情况下获取服务器的 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
有没有办法在我的方法中做这个队列的事情而不使用来自异步的实际队列?因为我希望这是可能的,并且它适用于一台服务器,所以必须有一种方法来概括这一点
解决方案
在您的on_ready
事件中,您可以初始化服务器 ID 到空列表的映射:
queues = {}
@bot.event
async def on_ready():
for server in bot.servers:
queues[server.id] = []
推荐阅读
- c# - C# MySQL 将相同的数据插入到 2 个不同的表中
- cmake - GTest/GMock 使用 vcpkg 产生链接器错误
- java - ORA-29532: Java 调用被未捕获的 Java 异常终止:java.awt.HeadlessException
- c - 在 C 语言中,字符数组是否总是且仅用于表示字符串?
- python - 一个类重写了我希望不会改变的变量
- xamarin - 如何让 camera2 api 第二次工作?
- react-native - 如何在 react-native中将“编辑”图标作为按钮添加到组件
- python - 即使调整图形大小,如何在图例和轴之间获得恒定距离?
- c - c中的最小堆和堆排序算法
- python - 在 Gurobi 中添加二进制变量