async def get_soundboard_data(self): if "sound_board" in list(global_settings.bot_plugins): import JJMumbleBot.plugins.extensions.sound_board.utility.sound_board_utility as sbu clips_list = sbu.prepare_sb_list() return ResponseModel(200, "success", {"clips": clips_list}).toDict() return ResponseModel(500, "error", {"error_message": "Encountered an error retrieving sound_board clips."}).toDict()
async def play_soundboard_clip(self, request: StdModel): if len(request.text) > 0 and "sound_board" in list(global_settings.bot_plugins): text = RemoteTextMessage(channel_id=global_settings.mumble_inst.users.myself['channel_id'], session=global_settings.mumble_inst.users.myself['session'], message=f"{global_settings.cfg[C_MAIN_SETTINGS][P_CMD_TOKEN]}sbquietnow {request.text}", actor=global_settings.mumble_inst.users.myself['session']) global_settings.core_callbacks.callback(PYMUMBLE_CLBK_TEXTMESSAGERECEIVED, text, True) return ResponseModel(200, "success").toDict() return ResponseModel(400, "error", {"error_message": "The provided sound_board clip is invalid!"}).toDict()
async def remove_channel(self, command: StdModel): if len(command.text) > 0: rutils.remove_channel(command.text.strip()) return ResponseModel(200, "success").toDict() return ResponseModel( 400, "error", { "error_message": f"Please be sure to provide a valid channel name that exists!" })
async def play_random_soundboard(self): if "sound_board" in list(global_settings.bot_plugins): text = RemoteTextMessage(channel_id=global_settings.mumble_inst.users.myself['channel_id'], session=global_settings.mumble_inst.users.myself['session'], message=f"{global_settings.cfg[C_MAIN_SETTINGS][P_CMD_TOKEN]}sbrandomquietnow", actor=global_settings.mumble_inst.users.myself['session']) global_settings.core_callbacks.callback(PYMUMBLE_CLBK_TEXTMESSAGERECEIVED, text, True) return ResponseModel(200, "success").toDict() return ResponseModel(400, "error", { "error_message": "Encountered an error while trying to play a random sound clip!"}).toDict()
async def deafen_user(self, command: StdModel): if len(command.text) > 0: if not rutils.deafen(username=command.text.strip()): rutils.undeafen(username=command.text.strip()) return ResponseModel(200, "success").toDict() return ResponseModel( 400, "error", { "error_message": f"Please be sure to provide the username of a valid user in the " f"server and make sure the bot has adequate permissions." })
async def make_temporary_channel(self, command: StdModel): if len(command.text) > 0: rutils.make_channel(rutils.get_my_channel(), command.text.strip(), temporary=False) return ResponseModel(200, "success").toDict() return ResponseModel( 400, "error", { "error_message": f"Please be sure to provide a valid permanent channel name!" })
async def join_user(self, command: StdModel): if len(command.text) > 0: user_channel = rutils.get_user_channel(command.text.strip()) if user_channel: user_channel.move_in() return ResponseModel(200, "success").toDict() return ResponseModel( 400, "error", { "error_message": f"Please be sure to provide the username of a valid user in the " f"server!" })
async def send_command(self, command: StdModel): if len(command.text) > 0: if command.text[0] == global_settings.cfg[C_MAIN_SETTINGS][P_CMD_TOKEN]: text = RemoteTextMessage(channel_id=global_settings.mumble_inst.users.myself['channel_id'], session=global_settings.mumble_inst.users.myself['session'], message=command.text, actor=global_settings.mumble_inst.users.myself['session']) global_settings.core_callbacks.callback(PYMUMBLE_CLBK_TEXTMESSAGERECEIVED, text, True) return ResponseModel(200, "success").toDict() return ResponseModel(400, "error", {"error_message": f"The provided command was invalid! Please be sure that your command starts with '{global_settings.cfg[C_MAIN_SETTINGS][P_CMD_TOKEN]}'.\n" f"For Additional assistance, try the {global_settings.cfg[C_MAIN_SETTINGS][P_CMD_TOKEN]}help command."}).toDict() return ResponseModel(500, "error", {"error_message": f"There was an error processing the provided command."}).toDict()
async def rename_channel(self, command: StdModel): if len(command.text) > 0: split_data = command.text.strip().split(' ', 1) if len(split_data) == 2: rutils.rename_channel(split_data[0], split_data[1]) return ResponseModel(200, "success").toDict() return ResponseModel( 400, "error", { "error_message": f"Please be sure to provide a valid channel name that exists and a " f"new valid channel name!" })
async def start_plugin(self, command: StdModel): if len(command.text.strip()) > 0: if cutils.turn_on_plugin(command.text.strip()): return ResponseModel( 200, "success", { "message": f"Successfully started plugin: {command.text.strip()}" }).toDict() return ResponseModel( 400, "error", { "error_message": f"Please make sure you provide an existing, stopped plugin to start." }).toDict()
async def move_user(self, command: StdModel): if len(command.text) > 0: split_data = command.text.strip().split(' ', 1) if len(split_data) == 2: rutils.move_user(split_data[0], split_data[1]) return ResponseModel(200, "success").toDict() return ResponseModel( 400, "error", { "error_message": f"Please be sure to provide the username of a valid user" f" and a valid channel name. Please make sure the bot has" f"adequate permissions." })
async def ban_user(self, command: StdModel): if len(command.text) > 0: split_data = command.text.strip().split(' ', 1) if len(split_data) == 2: rutils.ban_user(split_data[0], split_data[1]) else: rutils.ban_user(command.text.strip(), reason='N/A') return ResponseModel(200, "success").toDict() return ResponseModel( 400, "error", { "error_message": f"Please be sure to provide the username of a valid user in the " f"server and make sure the bot has adequate permissions." })
async def set_plugin_metadata(self, command: JSONModel): if len(command.name.strip()) > 0 and command.text: results = rutils.set_plugin_metadata(command.name.strip(), command.text) if results: return ResponseModel(200, "success").toDict() return ResponseModel( 400, "error", { "error_message": f"Failed to write metadata file!" }).toDict() return ResponseModel( 400, "error", { "error_message": f"Please make sure you provide an existing plugin to retrieve metadata." }).toDict()
async def get_plugin_metadata(self, command: StdModel): if len(command.text.strip()) > 0: plugin_metadata = rutils.get_plugin_metadata(command.text.strip()) if plugin_metadata: return ResponseModel(200, "success", { "metadata": plugin_metadata }).toDict() return ResponseModel( 400, "error", { "error_message": f"Failed to retrieve metadata file!" }).toDict() return ResponseModel( 400, "error", { "error_message": f"Please make sure you provide an existing plugin to retrieve metadata." }).toDict()
async def stop_audio(self): if not global_settings.aud_interface.status.is_stopped(): global_settings.aud_interface.stop() global_settings.gui_service.quick_gui( f"Stopped audio interface.", text_type='header', box_align='left') return ResponseModel(200, "success").toDict()
async def shuffle_audio(self): global_settings.aud_interface.shuffle() return ResponseModel(200, "success").toDict()
async def general_api(self): return ResponseModel( 200, "success", {"name": get_bot_name(), "command_token": global_settings.cfg[C_MAIN_SETTINGS][P_CMD_TOKEN]} ).toDict() #endregion
async def http_exception(request, exc): resp = ResponseModel(404, "error", {"error_message": "This path is invalid!"}) return JSONResponse(resp.toDict(), media_type="application/json", status_code=404)
async def remove_track(self, request: StdModel): if len(request.text) > 0: global_settings.aud_interface.remove_track(track_index=int(request.text)) return ResponseModel(200, "success").toDict() return ResponseModel(400, "error", {"error_message": "The provided track was invalid!"}).toDict()
async def leave_channel(self): rutils.leave_channel() return ResponseModel(200, "success").toDict()
async def resume_audio(self): if global_settings.aud_interface.status.is_paused(): global_settings.aud_interface.resume() return ResponseModel(200, "success").toDict()
async def loop_audio(self): global_settings.aud_interface.loop_track() return ResponseModel(200, "success").toDict()
async def replay_audio(self): global_settings.aud_interface.replay() return ResponseModel(200, "success").toDict()
async def users_section(self): return ResponseModel(200, "success").toDict()
async def restart_all_plugins(self): rutils.refresh_plugins() return ResponseModel(200, "success").toDict()
async def get_uptime(self): return ResponseModel(200, "success", rutils.check_up_time()).toDict()
async def get_token(self): return ResponseModel( 200, "success", {"command_token": global_settings.cfg[C_MAIN_SETTINGS][P_CMD_TOKEN]} ).toDict()
async def get_about(self): return ResponseModel( 200, "success", f"{rutils.get_about()}<br>{rutils.get_bot_name()} is on version {rutils.get_version()}" ).toDict()
async def next_audio(self): global_settings.aud_interface.skip(0) return ResponseModel(200, "success").toDict()
async def increase_volume_audio(self): global_settings.aud_interface.audio_utilities.set_volume_fast( global_settings.aud_interface.status.get_volume() + 0.1, auto=False) return ResponseModel(200, "success").toDict()