回答編集履歴
9
修正
answer
CHANGED
@@ -18,7 +18,7 @@
|
|
18
18
|
play(voice_client, queue)
|
19
19
|
|
20
20
|
def play(voice_client, queue):
|
21
|
-
if not queue or voice_client.():
|
21
|
+
if not queue or voice_client.is_playing():
|
22
22
|
return
|
23
23
|
source = queue.popleft()
|
24
24
|
voice_client.play(source, after=lambda e:play(voice_client, queue))
|
8
is_playing追加
answer
CHANGED
@@ -18,7 +18,7 @@
|
|
18
18
|
play(voice_client, queue)
|
19
19
|
|
20
20
|
def play(voice_client, queue):
|
21
|
-
if not queue:
|
21
|
+
if not queue or voice_client.():
|
22
22
|
return
|
23
23
|
source = queue.popleft()
|
24
24
|
voice_client.play(source, after=lambda e:play(voice_client, queue))
|
7
修正
answer
CHANGED
@@ -21,7 +21,7 @@
|
|
21
21
|
if not queue:
|
22
22
|
return
|
23
23
|
source = queue.popleft()
|
24
|
-
voice_client.play(source, lambda e:play(voice_client, queue))
|
24
|
+
voice_client.play(source, after=lambda e:play(voice_client, queue))
|
25
25
|
```
|
26
26
|
|
27
27
|
のような感じでしょうか。プログラムに合わせて適宜読み替えてください。
|
6
修正(pop->append)
answer
CHANGED
@@ -13,7 +13,7 @@
|
|
13
13
|
|
14
14
|
def enqueue(voice_client, guild, source):
|
15
15
|
queue = queue_dict[guild.id]
|
16
|
-
queue.
|
16
|
+
queue.append(source)
|
17
17
|
if not voice_client.is_playing():
|
18
18
|
play(voice_client, queue)
|
19
19
|
|
5
typo
answer
CHANGED
@@ -12,7 +12,7 @@
|
|
12
12
|
queue_dict = defaultdict(deque)
|
13
13
|
|
14
14
|
def enqueue(voice_client, guild, source):
|
15
|
-
queue =
|
15
|
+
queue = queue_dict[guild.id]
|
16
16
|
queue.push(source)
|
17
17
|
if not voice_client.is_playing():
|
18
18
|
play(voice_client, queue)
|
4
修正
answer
CHANGED
@@ -18,7 +18,7 @@
|
|
18
18
|
play(voice_client, queue)
|
19
19
|
|
20
20
|
def play(voice_client, queue):
|
21
|
-
if not
|
21
|
+
if not queue:
|
22
22
|
return
|
23
23
|
source = queue.popleft()
|
24
24
|
voice_client.play(source, lambda e:play(voice_client, queue))
|
3
修正
answer
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
VioceClient.playは、引数afterに指定した関数を音声再生後かエラー発生時に実行することができます。
|
2
|
+
なのでキューが空になるまでafterで再帰すればいいです。
|
2
3
|
|
3
4
|
また、キューはcollections.dequeを使うと良いと思います。
|
4
|
-
複数のサーバーで運用される場合、
|
5
|
+
複数のサーバーで運用される場合、キューはサーバーごとに持たないと音声が混ざってしまうのでdictなどに格納するといいでしょう。
|
5
6
|
|
6
7
|
ざっくりとですが、イメージとしては、
|
7
8
|
|
@@ -20,7 +21,7 @@
|
|
20
21
|
if not stack:
|
21
22
|
return
|
22
23
|
source = queue.popleft()
|
23
|
-
voice_client.play(source, lambda e:play(voice_client, queue)
|
24
|
+
voice_client.play(source, lambda e:play(voice_client, queue))
|
24
25
|
```
|
25
26
|
|
26
27
|
のような感じでしょうか。プログラムに合わせて適宜読み替えてください。
|
2
修正
answer
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
VioceClient.playは、引数afterに指定した関数を音声再生後かエラー発生時に実行することができます。
|
2
2
|
|
3
|
-
また、
|
3
|
+
また、キューはcollections.dequeを使うと良いと思います。
|
4
4
|
複数のサーバーで運用される場合、スタックはサーバーごとに持たないと音声が混ざってしまうのでdictなどに格納するといいでしょう。
|
5
5
|
|
6
6
|
ざっくりとですが、イメージとしては、
|
@@ -8,19 +8,19 @@
|
|
8
8
|
```py
|
9
9
|
from collections import defaultdict, deque
|
10
10
|
|
11
|
-
|
11
|
+
queue_dict = defaultdict(deque)
|
12
12
|
|
13
|
-
def
|
13
|
+
def enqueue(voice_client, guild, source):
|
14
|
-
|
14
|
+
queue = stack_dict[guild.id]
|
15
|
-
|
15
|
+
queue.push(source)
|
16
16
|
if not voice_client.is_playing():
|
17
|
-
play(voice_client,
|
17
|
+
play(voice_client, queue)
|
18
18
|
|
19
|
-
def play(voice_client,
|
19
|
+
def play(voice_client, queue):
|
20
20
|
if not stack:
|
21
21
|
return
|
22
|
-
source =
|
22
|
+
source = queue.popleft()
|
23
|
-
voice_client.play(source, lambda e:play(voice_client,
|
23
|
+
voice_client.play(source, lambda e:play(voice_client, queue)
|
24
24
|
```
|
25
25
|
|
26
26
|
のような感じでしょうか。プログラムに合わせて適宜読み替えてください。
|
1
修正
answer
CHANGED
@@ -10,7 +10,7 @@
|
|
10
10
|
|
11
11
|
stack_dict = defaultdict(deque)
|
12
12
|
|
13
|
-
def
|
13
|
+
def push(voice_client, guild, source):
|
14
14
|
stack = stack_dict[guild.id]
|
15
15
|
stack.push(source)
|
16
16
|
if not voice_client.is_playing():
|