async def voice_cb(message): global player, ytqueue if ytqueue: return if player: if player.is_playing(): return to_say = codecs.encode(message.clean_content[len(prefix + "speak "):], 'ascii', 'replace') # await client.send_message(message.channel, to_say) if client.is_voice_connected(): # await client.send_message(message.channel, "Now saying: " + to_say) cur_params = [] for k, v in tts_params.items(): cur_params += ["-" + k, v] O = subprocess.run(['espeak', '-k', '20'] + cur_params + [to_say, '-w', 'temp.wav']) player = VC.create_ffmpeg_player("temp.wav") player.start() else: await client.send_message(message.channel, "Voice client is not connected.") async def next_video_cb(message): global ytqueue if len(ytqueue) == 0: await client.send_message(message.channel, "Nothing to skip.") return next_video() if len(ytqueue) == 0: await client.send_message(message.channel, "Skipped video. Reached end of queue") else: await client.send_message(message.channel, "Skipped video. Now playing: " + ytqueue[0].title) def next_video(): global ytqueue if len(ytqueue) > 0: ytplayer = ytqueue.pop(0) try_stop_player(ytplayer) if len(ytqueue) > 0: ytqueue[0].start() async def youtube_cb(message): global player, ytqueue if player: if player.is_playing(): return if client.is_voice_connected(): vidhash = message.content.split()[1] url = "http://youtu.be/" + vidhash for attempt in range(3): try: ytplayer = await VC.create_ytdl_player(url, after = next_video) except: pass else: break else: await client.send_message(message.channel, "Whoops! I couldn't get that video for you. Try another?") return if len(ytqueue) == 0: await client.send_message(message.channel, "Now playing: " + ytplayer.title) ytplayer.start() else: await client.send_message(message.channel, "Queued: " + ytplayer.title) ytplayer.message = message ytqueue.append(ytplayer) else: await client.send_message(message.channel, "Voice client is not connected.") def try_stop_player(player_ob): if not player_ob: return while player_ob.is_playing(): try: player_ob.stop() except: pass async def stop_player_cb(message): global player, ytqueue try_stop_player(player) if len(ytqueue) > 0: try_stop_player(ytqueue[0]) ytqueue = []