feat(pterodactyl): allow disabling console commands from being sent through discord
This commit is contained in:
parent
39808f1766
commit
74f58162de
3 changed files with 36 additions and 2 deletions
|
@ -39,7 +39,9 @@ Default value:
|
||||||
tellraw @a ["",{"text":".$N ","color":".$C","insertion":"<@.$I>","hoverEvent":{"action":"show_text","contents":"Shift click to mention this user inside Discord"}},{"text":"(DISCORD):","color":"blue","clickEvent":{"action":"open_url","value":".$V"},"hoverEvent":{"action":"show_text","contents":"Click to join the Discord Server"}},{"text":" .$M","color":"white"}]
|
tellraw @a ["",{"text":".$N ","color":".$C","insertion":"<@.$I>","hoverEvent":{"action":"show_text","contents":"Shift click to mention this user inside Discord"}},{"text":"(DISCORD):","color":"blue","clickEvent":{"action":"open_url","value":".$V"},"hoverEvent":{"action":"show_text","contents":"Click to join the Discord Server"}},{"text":" .$M","color":"white"}]
|
||||||
```
|
```
|
||||||
|
|
||||||
## `consolechannel`
|
## `console`
|
||||||
|
|
||||||
|
### `channel`
|
||||||
|
|
||||||
/// admonition | Only give access to the console channel to people you trust!
|
/// admonition | Only give access to the console channel to people you trust!
|
||||||
type: danger
|
type: danger
|
||||||
|
@ -63,6 +65,21 @@ This is to prevent the console channel from flooding and getting backed up by Di
|
||||||
|
|
||||||
Default value: `None`
|
Default value: `None`
|
||||||
|
|
||||||
|
### `commands`
|
||||||
|
|
||||||
|
/// admonition | This has no effect on the `[p]pterodactyl command` text command, or the matching slash command.
|
||||||
|
type: danger
|
||||||
|
If you want to disable the ability to execute commands on the server through Discord, use the following commands:
|
||||||
|
`[p]pterodactyl config console commands False` - this command
|
||||||
|
`[p]command disable pterodactyl command` - disables the text command that lets you execute commands on the server
|
||||||
|
`[p]slash disable pterodactyl` - due to how slash commands are laid out, this is the only way to disable the ability to execute commands on the server
|
||||||
|
`[p]slash sync` - apply above slash command change
|
||||||
|
///
|
||||||
|
|
||||||
|
This option determines if commands sent to the console channel will be sent to the Pterodactyl console.
|
||||||
|
|
||||||
|
Default value: `False`
|
||||||
|
|
||||||
## `invite`
|
## `invite`
|
||||||
|
|
||||||
This option determines what url the chat command will substitute in for the Discord invite placeholder.
|
This option determines what url the chat command will substitute in for the Discord invite placeholder.
|
||||||
|
|
|
@ -7,6 +7,7 @@ def register_config(config_obj: Config) -> None:
|
||||||
base_url=None,
|
base_url=None,
|
||||||
server_id=None,
|
server_id=None,
|
||||||
console_channel=None,
|
console_channel=None,
|
||||||
|
console_commands_enabled=False,
|
||||||
current_status='',
|
current_status='',
|
||||||
chat_regex=r"^\[\d{2}:\d{2}:\d{2}\sINFO\]: (?!\[(?:Server|Rcon)\])(?:<|\[)(\w+)(?:>|\]) (.*)",
|
chat_regex=r"^\[\d{2}:\d{2}:\d{2}\sINFO\]: (?!\[(?:Server|Rcon)\])(?:<|\[)(\w+)(?:>|\]) (.*)",
|
||||||
server_regex=r"^\[\d{2}:\d{2}:\d{2} INFO\]:(?: \[Not Secure\])? \[(?:Server|Rcon)\] (.*)",
|
server_regex=r"^\[\d{2}:\d{2}:\d{2} INFO\]:(?: \[Not Secure\])? \[(?:Server|Rcon)\] (.*)",
|
||||||
|
|
|
@ -70,6 +70,10 @@ class Pterodactyl(commands.Cog):
|
||||||
@commands.Cog.listener()
|
@commands.Cog.listener()
|
||||||
async def on_message_without_command(self, message: discord.Message) -> None:
|
async def on_message_without_command(self, message: discord.Message) -> None:
|
||||||
if message.channel.id == await config.console_channel() and message.author.bot is False:
|
if message.channel.id == await config.console_channel() and message.author.bot is False:
|
||||||
|
if await config.console_commands_enabled() is False:
|
||||||
|
await message.channel.send("Console commands are disabled.")
|
||||||
|
logger.debug("Received console command from %s, but console commands are disabled: %s", message.author.id, message.content)
|
||||||
|
return
|
||||||
logger.debug("Received console command from %s: %s", message.author.id, message.content)
|
logger.debug("Received console command from %s: %s", message.author.id, message.content)
|
||||||
await message.channel.send(f"Received console command from {message.author.id}: {message.content[:1900]}", allowed_mentions=discord.AllowedMentions.none())
|
await message.channel.send(f"Received console command from {message.author.id}: {message.content[:1900]}", allowed_mentions=discord.AllowedMentions.none())
|
||||||
try:
|
try:
|
||||||
|
@ -349,12 +353,22 @@ class Pterodactyl(commands.Cog):
|
||||||
self.retry_counter = 0
|
self.retry_counter = 0
|
||||||
self.task = self.get_task()
|
self.task = self.get_task()
|
||||||
|
|
||||||
@pterodactyl_config.command(name = "consolechannel")
|
@pterodactyl_config.group(name = "console")
|
||||||
|
async def pterodactyl_config_console(self, ctx: commands.Context):
|
||||||
|
"""Configure console settings."""
|
||||||
|
|
||||||
|
@pterodactyl_config_console.command(name = "channel")
|
||||||
async def pterodactyl_config_console_channel(self, ctx: commands.Context, channel: discord.TextChannel) -> None:
|
async def pterodactyl_config_console_channel(self, ctx: commands.Context, channel: discord.TextChannel) -> None:
|
||||||
"""Set the channel to send console output to."""
|
"""Set the channel to send console output to."""
|
||||||
await config.console_channel.set(channel.id)
|
await config.console_channel.set(channel.id)
|
||||||
await ctx.send(f"Console channel set to {channel.mention}")
|
await ctx.send(f"Console channel set to {channel.mention}")
|
||||||
|
|
||||||
|
@pterodactyl_config_console.command(name = "commands")
|
||||||
|
async def pterodactyl_config_console_commands(self, ctx: commands.Context, enabled: bool) -> None:
|
||||||
|
"""Enable or disable console commands."""
|
||||||
|
await config.console_commands_enabled.set(enabled)
|
||||||
|
await ctx.send(f"Console commands set to {enabled}")
|
||||||
|
|
||||||
@pterodactyl_config.command(name = "invite")
|
@pterodactyl_config.command(name = "invite")
|
||||||
async def pterodactyl_config_invite(self, ctx: commands.Context, invite: str) -> None:
|
async def pterodactyl_config_invite(self, ctx: commands.Context, invite: str) -> None:
|
||||||
"""Set the invite link for your server."""
|
"""Set the invite link for your server."""
|
||||||
|
@ -544,6 +558,7 @@ class Pterodactyl(commands.Cog):
|
||||||
base_url = await config.base_url()
|
base_url = await config.base_url()
|
||||||
server_id = await config.server_id()
|
server_id = await config.server_id()
|
||||||
console_channel = await config.console_channel()
|
console_channel = await config.console_channel()
|
||||||
|
console_commands_enabled = await config.console_commands_enabled()
|
||||||
chat_channel = await config.chat_channel()
|
chat_channel = await config.chat_channel()
|
||||||
chat_command = await config.chat_command()
|
chat_command = await config.chat_command()
|
||||||
chat_regex = await config.chat_regex()
|
chat_regex = await config.chat_regex()
|
||||||
|
@ -566,6 +581,7 @@ class Pterodactyl(commands.Cog):
|
||||||
embed.description = f"""**Base URL:** {base_url}
|
embed.description = f"""**Base URL:** {base_url}
|
||||||
**Server ID:** `{server_id}`
|
**Server ID:** `{server_id}`
|
||||||
**Console Channel:** <#{console_channel}>
|
**Console Channel:** <#{console_channel}>
|
||||||
|
**Console Commands Enabled:** {self.get_bool_str(console_commands_enabled)}
|
||||||
**Chat Channel:** <#{chat_channel}>
|
**Chat Channel:** <#{chat_channel}>
|
||||||
**Startup Message:** {startup_msg}
|
**Startup Message:** {startup_msg}
|
||||||
**Shutdown Message:** {shutdown_msg}
|
**Shutdown Message:** {shutdown_msg}
|
||||||
|
|
Loading…
Reference in a new issue