diff --git a/README.md b/README.md index 83eb5f7..39decf9 100644 --- a/README.md +++ b/README.md @@ -6,5 +6,11 @@ - [X] unloading a spool returns it to the library - [ ] job management? - [x] shoot some of the printers can hold multiple fillaments: endermixer 2, ams: 4 -- [ ] handling of spools when printer is deleted -- [ ] command permissions +- [x] handling of spools when printer is deleted +- [x] command permissions +- [ ] refactoring +- [ ] documentation + - [ ] readme + - [ ] fabsoc docs + - [ ] help command -> points to fabsoc docs? +- [ ] offer to delete /unloaded spools diff --git a/Tools.gd b/Tools.gd new file mode 100644 index 0000000..877d450 --- /dev/null +++ b/Tools.gd @@ -0,0 +1,17 @@ +extends Node + +const technician_role_id : String = "692291233627897876" + +func check_perms(interaction : DiscordInteraction) -> bool: + + print(interaction.member.roles) + for role : String in interaction.member.roles: + if role == technician_role_id: + return true + + #havent found the role, sending error + interaction.reply({ + "content" : "sorry! only users with the `technician` role can use this command", + "ephemeral" : true + }) + return false diff --git a/Tools.gd.uid b/Tools.gd.uid new file mode 100644 index 0000000..b1b8134 --- /dev/null +++ b/Tools.gd.uid @@ -0,0 +1 @@ +uid://b8a7fx3a3ieqc diff --git a/application_cmds/printer-create.gd b/application_cmds/printer-create.gd index 20d9bab..259833a 100644 --- a/application_cmds/printer-create.gd +++ b/application_cmds/printer-create.gd @@ -7,6 +7,9 @@ extends RefCounted # pass func execute(main, bot: DiscordBot, interaction: DiscordInteraction, options: Array) -> void: + if not Tools.check_perms(interaction): + return + print(options) var printer_name = options[0].value diff --git a/application_cmds/printer-delete.gd b/application_cmds/printer-delete.gd index a2241d6..5302948 100644 --- a/application_cmds/printer-delete.gd +++ b/application_cmds/printer-delete.gd @@ -35,6 +35,9 @@ func on_autocomplete(main, bot: DiscordBot, interaction: DiscordInteraction, opt pass func execute(main, bot: DiscordBot, interaction: DiscordInteraction, options: Array) -> void: + if not Tools.check_perms(interaction): + return + print(options) var printer_name = options[0].value var printer_exists : bool = false @@ -73,16 +76,24 @@ func execute(main, bot: DiscordBot, interaction: DiscordInteraction, options: Ar pass func on_interaction_create(bot: DiscordBot, interaction : DiscordInteraction): + + if not interaction.is_button(): return print(interaction.data.custom_id) if(interaction.data.custom_id == "delete-printer"): + if not Tools.check_perms(interaction): + return #print("deleting: " + endangered_printer) for printer in Library.save.printers: if printer.name == endangered_printer: + for spool : Spool in printer.spools: + Library.save.spools.append(spool) + #dont need to erase, the whole printers about to get obilierated + Library.save.printers.erase(printer) Library.save_data() var embed = Embed.new().set_description(endangered_printer + " has been deleted") @@ -94,6 +105,8 @@ func on_interaction_create(bot: DiscordBot, interaction : DiscordInteraction): }) elif(interaction.data.custom_id == "keep-printer"): + if not Tools.check_perms(interaction): + return endangered_printer = "" var embed = Embed.new().set_description("cancelled deletion") var new_embeds = interaction.message.embeds + [embed] diff --git a/application_cmds/printer-load.gd b/application_cmds/printer-load.gd index 4e8d1a2..e34c0f4 100644 --- a/application_cmds/printer-load.gd +++ b/application_cmds/printer-load.gd @@ -19,6 +19,9 @@ func on_autocomplete(main, bot: DiscordBot, interaction: DiscordInteraction, opt pass func execute(main, bot: DiscordBot, interaction: DiscordInteraction, options: Array) -> void: + if not Tools.check_perms(interaction): + return + print(options) var printer_name = options[0].value var printer_exists : bool = false @@ -114,6 +117,9 @@ func on_interaction_create(bot: DiscordBot, interaction : DiscordInteraction): print(interaction.data.custom_id) if(interaction.data.custom_id == "delete-oldspool"): + if not Tools.check_perms(interaction): + return + #print("deleting: " + endangered_printer) for spool in Library.save.spools: if spool == endangered_spool: @@ -129,6 +135,9 @@ func on_interaction_create(bot: DiscordBot, interaction : DiscordInteraction): }) elif(interaction.data.custom_id == "keep-oldspool"): + if not Tools.check_perms(interaction): + return + endangered_spool = null var embed = Embed.new().set_description("cancelled removal") var new_embeds = interaction.message.embeds + [embed] diff --git a/application_cmds/printer-nozzle.gd b/application_cmds/printer-nozzle.gd index ab5241f..efde925 100644 --- a/application_cmds/printer-nozzle.gd +++ b/application_cmds/printer-nozzle.gd @@ -33,6 +33,9 @@ func on_autocomplete(main, bot: DiscordBot, interaction: DiscordInteraction, opt pass func execute(main, bot: DiscordBot, interaction: DiscordInteraction, options: Array) -> void: + if not Tools.check_perms(interaction): + return + print(options) var printer_name = options[0].value var new_nozzle = options[1].value diff --git a/application_cmds/printer-slots.gd b/application_cmds/printer-slots.gd index 890a5ee..b14b1ff 100644 --- a/application_cmds/printer-slots.gd +++ b/application_cmds/printer-slots.gd @@ -33,6 +33,9 @@ func on_autocomplete(main, bot: DiscordBot, interaction: DiscordInteraction, opt pass func execute(main, bot: DiscordBot, interaction: DiscordInteraction, options: Array) -> void: + if not Tools.check_perms(interaction): + return + print(options) var printer_name = options[0].value var new_slots : int = options[1].value diff --git a/application_cmds/printer-unload.gd b/application_cmds/printer-unload.gd index 59b821a..d0bf4d8 100644 --- a/application_cmds/printer-unload.gd +++ b/application_cmds/printer-unload.gd @@ -15,6 +15,9 @@ func on_autocomplete(main, bot: DiscordBot, interaction: DiscordInteraction, opt pass func execute(main, bot: DiscordBot, interaction: DiscordInteraction, options: Array) -> void: + if not Tools.check_perms(interaction): + return + print(options) var printer_name = options[0].value var printer_exists : bool = false @@ -86,18 +89,22 @@ func on_interaction_create(bot: DiscordBot, interaction : DiscordInteraction): if not interaction.is_select_menu(): return - print(interaction.data.values[0]) - var spool_unloading : String = interaction.data.values[0] - for spool : Spool in printer_edit.spools: - if spool.name == spool_unloading: - Library.save.spools.append(spool) - printer_edit.spools.erase(spool) - Library.save_data() - interaction.update({ - "content" : "returned `" + spool.name + "` to the library" , - "components" : [], - }) - break + if(interaction.data.custom_id == "spool-select"): + if not Tools.check_perms(interaction): + return + + print(interaction.data.values[0]) + var spool_unloading : String = interaction.data.values[0] + for spool : Spool in printer_edit.spools: + if spool.name == spool_unloading: + Library.save.spools.append(spool) + printer_edit.spools.erase(spool) + Library.save_data() + interaction.update({ + "content" : "returned `" + spool.name + "` to the library" , + "components" : [], + }) + break diff --git a/application_cmds/spool-create.gd b/application_cmds/spool-create.gd index 5758428..ed0b1ff 100644 --- a/application_cmds/spool-create.gd +++ b/application_cmds/spool-create.gd @@ -7,6 +7,9 @@ extends RefCounted # pass func execute(main, bot: DiscordBot, interaction: DiscordInteraction, options: Array) -> void: + if not Tools.check_perms(interaction): + return + print(options) var spool_name : String = options[0].value var spool_link : String diff --git a/application_cmds/spool-delete.gd b/application_cmds/spool-delete.gd index 5ad1aa2..b092bc6 100644 --- a/application_cmds/spool-delete.gd +++ b/application_cmds/spool-delete.gd @@ -35,6 +35,9 @@ func on_autocomplete(main, bot: DiscordBot, interaction: DiscordInteraction, opt pass func execute(main, bot: DiscordBot, interaction: DiscordInteraction, options: Array) -> void: + if not Tools.check_perms(interaction): + return + print(options) var spool_name = options[0].value var spool_exists : bool = false @@ -73,12 +76,16 @@ func execute(main, bot: DiscordBot, interaction: DiscordInteraction, options: Ar pass func on_interaction_create(bot: DiscordBot, interaction : DiscordInteraction): + + if not interaction.is_button(): return print(interaction.data.custom_id) if(interaction.data.custom_id == "delete-spool"): + if not Tools.check_perms(interaction): + return #print("deleting: " + endangered_printer) for spool in Library.save.spools: if spool.name == endangered_spool: @@ -94,6 +101,8 @@ func on_interaction_create(bot: DiscordBot, interaction : DiscordInteraction): }) elif(interaction.data.custom_id == "keep-spool"): + if not Tools.check_perms(interaction): + return endangered_spool = "" var embed = Embed.new().set_description("cancelled deletion") var new_embeds = interaction.message.embeds + [embed] diff --git a/project.godot b/project.godot index 02f80a7..14f68ce 100644 --- a/project.godot +++ b/project.godot @@ -19,6 +19,7 @@ config/icon="uid://dta0nr1cvl70v" Library="*res://Library.tscn" AutocompleteTools="*res://AutocompleteTools.gd" +Tools="*res://Tools.gd" [editor_plugins]