From 1e8c6a1e1b53e2f256e590f077b3adade19dc059 Mon Sep 17 00:00:00 2001 From: BodgeMaster <> Date: Fri, 13 Jan 2023 19:22:30 +0100 Subject: [PATCH 1/6] Remove (theoretically) redundant call --- bot.py | 1 - 1 file changed, 1 deletion(-) diff --git a/bot.py b/bot.py index 8fa36be..1c31edb 100644 --- a/bot.py +++ b/bot.py @@ -195,5 +195,4 @@ System: {sys.platform}""" await interaction.response.send_message(embed=embed, view=url_view) -client.tree.sync() client.run(sys.argv[1]) From 25c3d57fe2aaa23e45d9b4bb83693be354285c64 Mon Sep 17 00:00:00 2001 From: BodgeMaster <> Date: Fri, 13 Jan 2023 19:32:21 +0100 Subject: [PATCH 2/6] =?UTF-8?q?Ignore=20nano=E2=80=99s=20.swp=20files?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 5d381cc..8523d1f 100644 --- a/.gitignore +++ b/.gitignore @@ -160,3 +160,4 @@ cython_debug/ # option (not recommended) you can uncomment the following to ignore the entire idea folder. #.idea/ +*.swp From 21384b9a35f99e70c2c5401b233296b9c7d445ee Mon Sep 17 00:00:00 2001 From: BodgeMaster <> Date: Fri, 13 Jan 2023 19:34:04 +0100 Subject: [PATCH 3/6] Improve code readability --- bot.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/bot.py b/bot.py index 1c31edb..e38b00f 100644 --- a/bot.py +++ b/bot.py @@ -2,13 +2,13 @@ # Code revised by BodgeMaster # Code Licensed under GPL 3.0 +import sys, time, json + import discord from discord import app_commands import typing from discord.ext import commands import discord.utils -import time -import sys BOOT_TIME = time.time() @@ -38,8 +38,12 @@ async def on_ready(): @client.tree.command(guild=discord.Object(id=813127962881818624), name="change_hostname") @app_commands.describe(distro='Assign yourself a role') -async def distro(interaction: discord.Interaction, distro: typing.Literal['LFS', 'Kiss', 'Gentoo', 'Void', 'NixOS', 'Alpine', 'Arch', 'Arch-based', 'Red Hat', 'Bedrock', 'SuSE Based', 'OpenSuSE', - 'Debian', 'Debian based', 'Solus', 'Fedora', 'Ubuntu', 'Ubuntu Based', 'BSD', 'MacOS', 'Windows']): +async def distro(interaction: discord.Interaction, distro: typing.Literal[ + 'LFS', 'Kiss', 'Gentoo', 'Void', 'NixOS', 'Alpine', + 'Arch', 'Arch-based', 'Red Hat', 'Bedrock', 'SuSE Based', + 'OpenSuSE', 'Debian', 'Debian based', 'Solus', 'Fedora', + 'Ubuntu', 'Ubuntu Based', 'BSD', 'MacOS', 'Windows' +]): user = interaction.user if distro == 'LFS': user = interaction.user From c48b45d9bfc3621cdec870b55fd29c64bb08327e Mon Sep 17 00:00:00 2001 From: BodgeMaster <> Date: Fri, 13 Jan 2023 19:34:24 +0100 Subject: [PATCH 4/6] Read guild from config file --- bot.py | 8 ++++++-- config.json | 8 ++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) create mode 100644 config.json diff --git a/bot.py b/bot.py index e38b00f..8ebfe1d 100644 --- a/bot.py +++ b/bot.py @@ -12,6 +12,10 @@ import discord.utils BOOT_TIME = time.time() +config_file = open("config.json", "r") +config = json.loads(config_file.read()); +config_file.close() + def seconds_elapsed(): return time.time() - BOOT_TIME @@ -36,7 +40,7 @@ async def on_ready(): print('------') -@client.tree.command(guild=discord.Object(id=813127962881818624), name="change_hostname") +@client.tree.command(guild=discord.Object(id=config["guild"]), name="change_hostname") @app_commands.describe(distro='Assign yourself a role') async def distro(interaction: discord.Interaction, distro: typing.Literal[ 'LFS', 'Kiss', 'Gentoo', 'Void', 'NixOS', 'Alpine', @@ -174,7 +178,7 @@ async def distro(interaction: discord.Interaction, distro: typing.Literal[ # This context menu command only works on messages -@client.tree.context_menu(guild=discord.Object(id=813127962881818624), name='Report to Moderators') +@client.tree.context_menu(guild=discord.Object(id=config["guild"]), name='Report to Moderators') async def report_message(interaction: discord.Interaction, message: discord.Message): await interaction.response.send_message( f'Thanks for reporting this message by {message.author.mention} to our moderators.', ephemeral=True diff --git a/config.json b/config.json new file mode 100644 index 0000000..c93c520 --- /dev/null +++ b/config.json @@ -0,0 +1,8 @@ +{ + "guild": 750955881348464651, + "roles": { + "assign0": 1063506453308125274, + "assign1": 1063506544962064414 + }, + "report channel": 1063507041697677312 +} From 0aade0c6fdbc59c0f025b45da3fa597b409b3487 Mon Sep 17 00:00:00 2001 From: BodgeMaster <> Date: Fri, 13 Jan 2023 20:31:53 +0100 Subject: [PATCH 5/6] Make things actually work + minor improvement of ststus command though that will be revised soon anyway --- bot.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/bot.py b/bot.py index 8ebfe1d..67c1172 100644 --- a/bot.py +++ b/bot.py @@ -17,7 +17,7 @@ config = json.loads(config_file.read()); config_file.close() def seconds_elapsed(): - return time.time() - BOOT_TIME + return int(time.time() - BOOT_TIME) class MyClient(discord.Client): @@ -40,7 +40,7 @@ async def on_ready(): print('------') -@client.tree.command(guild=discord.Object(id=config["guild"]), name="change_hostname") +@client.tree.command(name="change_hostname") @app_commands.describe(distro='Assign yourself a role') async def distro(interaction: discord.Interaction, distro: typing.Literal[ 'LFS', 'Kiss', 'Gentoo', 'Void', 'NixOS', 'Alpine', @@ -48,6 +48,10 @@ async def distro(interaction: discord.Interaction, distro: typing.Literal[ 'OpenSuSE', 'Debian', 'Debian based', 'Solus', 'Fedora', 'Ubuntu', 'Ubuntu Based', 'BSD', 'MacOS', 'Windows' ]): + if not interaction.guild.id==config["guild"]: + print("Role assignment attempted from unknown guild.") + return + user = interaction.user if distro == 'LFS': user = interaction.user @@ -178,8 +182,10 @@ async def distro(interaction: discord.Interaction, distro: typing.Literal[ # This context menu command only works on messages -@client.tree.context_menu(guild=discord.Object(id=config["guild"]), name='Report to Moderators') +@client.tree.context_menu(name='Report to Moderators') async def report_message(interaction: discord.Interaction, message: discord.Message): + if not interaction.guild.id==config["guild"]: + return await interaction.response.send_message( f'Thanks for reporting this message by {message.author.mention} to our moderators.', ephemeral=True ) @@ -201,6 +207,7 @@ async def status(interaction: discord.Interaction): System: {sys.platform}""" url_view = discord.ui.View() await interaction.response.send_message(embed=embed, view=url_view) + print("Status queried.") client.run(sys.argv[1]) From 00f787ba318a70a175020a3d4906ccc4fb6bdcbc Mon Sep 17 00:00:00 2001 From: BodgeMaster <> Date: Fri, 13 Jan 2023 20:34:50 +0100 Subject: [PATCH 6/6] Load roles from config instead of hard-coding them --- bot.py | 140 ++++----------------------------------------------------- 1 file changed, 9 insertions(+), 131 deletions(-) diff --git a/bot.py b/bot.py index 67c1172..d6357c3 100644 --- a/bot.py +++ b/bot.py @@ -42,143 +42,21 @@ async def on_ready(): @client.tree.command(name="change_hostname") @app_commands.describe(distro='Assign yourself a role') -async def distro(interaction: discord.Interaction, distro: typing.Literal[ - 'LFS', 'Kiss', 'Gentoo', 'Void', 'NixOS', 'Alpine', - 'Arch', 'Arch-based', 'Red Hat', 'Bedrock', 'SuSE Based', - 'OpenSuSE', 'Debian', 'Debian based', 'Solus', 'Fedora', - 'Ubuntu', 'Ubuntu Based', 'BSD', 'MacOS', 'Windows' -]): +async def distro(interaction: discord.Interaction, distro: eval("typing.Literal[\""+ "\", \"".join(config["roles"].keys()) +"\"]")): if not interaction.guild.id==config["guild"]: print("Role assignment attempted from unknown guild.") return user = interaction.user - if distro == 'LFS': - user = interaction.user - role = discord.utils.get(user.guild.roles, id=813200239778856971) + role = discord.utils.get(interaction.guild.roles, id=config["roles"][distro]) + + try: await user.add_roles(role) - await interaction.response.send_message(content=f'`{role}` assigned to {user.mention}.') - print(f"`{role}` assigned to {user.mention}.") - if distro == 'Kiss': - user = interaction.user - role = discord.utils.get(user.guild.roles, id=884819839212982342) - await user.add_roles(role) - await interaction.response.send_message(content=f'`{role}` assigned to {user.mention}.') - print(f"`{role}` assigned to {user.mention}.") - if distro == 'Gentoo': - user = interaction.user - role = discord.utils.get(user.guild.roles, id=1813139495049232384) - await user.add_roles(role) - await interaction.response.send_message(content=f'`{role}` assigned to {user.mention}.') - print(f"`{role}` assigned to {user.mention}.") - if distro == 'Void': - user = interaction.user - role = discord.utils.get(user.guild.roles, id=813139633797988394) - await user.add_roles(role) - await interaction.response.send_message(content=f'`{role}` assigned to {user.mention}.') - print(f"`{role}` assigned to {user.mention}.") - if distro == 'NixOS': - user = interaction.user - role = discord.utils.get(user.guild.roles, id=827228988585279538) - await user.add_roles(role) - await interaction.response.send_message(content=f'`{role}` assigned to {user.mention}.') - print(f"`{role}` assigned to {user.mention}.") - if distro == 'Alpine': - user = interaction.user - role = discord.utils.get(user.guild.roles, id=932684264967925850) - await user.add_roles(role) - await interaction.response.send_message(content=f'`{role}` assigned to {user.mention}.') - print(f"`{role}` assigned to {user.mention}.") - if distro == 'Arch': - user = interaction.user - role = discord.utils.get(user.guild.roles, id=813139868678225991) - await user.add_roles(role) - await interaction.response.send_message(content=f'`{role}` assigned to {user.mention}.') - print(f"`{role}` assigned to {user.mention}.") - if distro == 'Arch-based': - user = interaction.user - role = discord.utils.get(user.guild.roles, id=813186782534828043) - await user.add_roles(role) - await interaction.response.send_message(content=f'`{role}` assigned to {user.mention}.') - print(f"`{role}` assigned to {user.mention}.") - if distro == 'Red Hat': - user = interaction.user - role = discord.utils.get(user.guild.roles, id=816823482318979094) - await user.add_roles(role) - await interaction.response.send_message(content=f'`{role}` assigned to {user.mention}.') - print(f"`{role}` assigned to {user.mention}.") - if distro == 'Bedrock': - user = interaction.user - role = discord.utils.get(user.guild.roles, id=825427559604027412) - await user.add_roles(role) - await interaction.response.send_message(content=f'`{role}` assigned to {user.mention}.') - print(f"`{role}` assigned to {user.mention}.") - if distro == 'SuSE Based': - user = interaction.user - role = discord.utils.get(user.guild.roles, id=1034793985715224587) - await user.add_roles(role) - await interaction.response.send_message(content=f'`{role}` assigned to {user.mention}.') - print(f"`{role}` assigned to {user.mention}.") - if distro == 'OpenSuSE': - user = interaction.user - role = discord.utils.get(user.guild.roles, id=813147179367661589) - await user.add_roles(role) - await interaction.response.send_message(content=f'`{role}` assigned to {user.mention}.') - print(f"`{role}` assigned to {user.mention}.") - if distro == 'Debian': - user = interaction.user - role = discord.utils.get(user.guild.roles, id=813142935247388672) - await user.add_roles(role) - await interaction.response.send_message(content=f'`{role}` assigned to {user.mention}.') - print(f"`{role}` assigned to {user.mention}.") - if distro == 'Debian based': - user = interaction.user - role = discord.utils.get(user.guild.roles, id=842882283504926756) - await user.add_roles(role) - await interaction.response.send_message(content=f'`{role}` assigned to {user.mention}.') - print(f"`{role}` assigned to {user.mention}.") - if distro == 'Solus': - user = interaction.user - role = discord.utils.get(user.guild.roles, id=820840553704325160) - await user.add_roles(role) - await interaction.response.send_message(content=f'`{role}` assigned to {user.mention}.') - print(f"`{role}` assigned to {user.mention}.") - if distro == 'Fedora': - user = interaction.user - role = discord.utils.get(user.guild.roles, id=820621219040591884) - await user.add_roles(role) - await interaction.response.send_message(content=f'`{role}` assigned to {user.mention}.') - print(f"`{role}` assigned to {user.mention}.") - if distro == 'Ubuntu': - user = interaction.user - role = discord.utils.get(user.guild.roles, id=813139746180038697) - await user.add_roles(role) - await interaction.response.send_message(content=f'`{role}` assigned to {user.mention}.') - print(f"`{role}` assigned to {user.mention}.") - if distro == 'Ubuntu Based': - user = interaction.user - role = discord.utils.get(user.guild.roles, id=813581408052183042) - await user.add_roles(role) - await interaction.response.send_message(content=f'`{role}` assigned to {user.mention}.') - print(f"`{role}` assigned to {user.mention}.") - if distro == 'BSD': - user = interaction.user - role = discord.utils.get(user.guild.roles, id=879444277330055228) - await user.add_roles(role) - await interaction.response.send_message(content=f'`{role}` assigned to {user.mention}.') - print(f"`{role}` assigned to {user.mention}.") - if distro == 'MacOS': - user = interaction.user - role = discord.utils.get(user.guild.roles, id=813147204772167680) - await user.add_roles(role) - await interaction.response.send_message(content=f'`{role}` assigned to {user.mention}.') - print(f"`{role}` assigned to {user.mention}.") - if distro == 'Windows': - user = interaction.user - role = discord.utils.get(user.guild.roles, id=813147019631788083) - await user.add_roles(role) - await interaction.response.send_message(content=f'`{role}` assigned to {user.mention}.') - print(f"`{role}` assigned to {user.mention}.") + await interaction.response.send_message(content=f'Added {role}.') + prnt("Added role.") + except: + await interaction.response.send_message(content='Something went wrong.') + print("Failed to add role. Permissions set correctly?") # This context menu command only works on messages