#python-3.x #discord.py
#python-3.x #discord.py
Вопрос:
Я пытаюсь создать музыкального бота на Python с возможностью создания очереди песен для каждого сервера, и это сработало, но единственная проблема заключалась в том, что очередь была одной для всех серверов («очередь» на самом деле была списком).
итак, я подумал: «хорошо, я просто создам dict, где ключи — это идентификаторы серверов, а значения — очереди», но это проблематично сделать, потому что, если я изменяю очередь в функции 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
есть ли какой-либо способ выполнить эту процедуру с очередью в моем методе без использования реальных очередей из async? поскольку я ожидаю, что это будет возможно, и это работает в случае одного сервера, должен быть способ обобщить это
Ответ №1:
В вашем on_ready
событии вы можете инициализировать сопоставление идентификаторов сервера с пустыми списками:
queues = {}
@bot.event
async def on_ready():
for server in bot.servers:
queues[server.id] = []
Комментарии:
1. @idanb Пожалуйста, отметьте это решение как официальный ответ, если оно помогло вам.