-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathsetup.py
More file actions
130 lines (108 loc) · 4.28 KB
/
setup.py
File metadata and controls
130 lines (108 loc) · 4.28 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
import json
from typing import Any
import discord
from discord import app_commands
from discord.ext import commands
from CodeUtils import embeds
bot_owner_id = 0
server_ip = ""
server_rcon_port = 25575
server_rcon_password = ""
server_member_role_name = ""
embed_title = ""
server_port = 25565
def _to_int(value: Any, default: int) -> int:
try:
return int(value)
except (TypeError, ValueError):
return default
def config_reload():
global server_ip, server_rcon_port, server_rcon_password
global server_member_role_name, embed_title, server_port, bot_owner_id
with open('config.json', 'r', encoding='utf-8') as config_file:
config = json.load(config_file)
bot_owner_id = _to_int(config.get("bot_owner_id"), 0)
server_ip = str(config.get("server_ip", ""))
server_rcon_port = _to_int(config.get("server_rcon_port"), 25575)
server_rcon_password = str(config.get("server_rcon_password", ""))
server_member_role_name = str(config.get("server_member_role_name", ""))
embed_title = str(config.get("embed_title", ""))
server_port = _to_int(config.get("server_port"), 25565)
class setup(commands.Cog):
def __init__(self, bot):
self.bot = bot
config_reload()
@app_commands.command(name="mc-setup", description="this command lets you configure the bot")
async def mcsetup(self, interaction: discord.Interaction):
config_reload()
if interaction.user.id == bot_owner_id:
await interaction.response.send_modal(SetupModal())
else:
await interaction.response.send_message(embed=embeds.NotOwner(), ephemeral=True)
class SetupModal(discord.ui.Modal):
def __init__(self):
config_reload()
super().__init__(title="Config")
self.new_server_ip = discord.ui.TextInput(
label="server_ip",
default=str(server_ip),
style=discord.TextStyle.short,
placeholder="mc.yourdomain.de",
)
self.new_server_rcon_port = discord.ui.TextInput(
label="server_rcon_port",
default=str(server_rcon_port),
style=discord.TextStyle.short,
placeholder="default: 25575",
)
self.new_server_rcon_password = discord.ui.TextInput(
label="server_rcon_password",
default=str(server_rcon_password),
style=discord.TextStyle.short,
placeholder="Password",
)
self.new_server_member_role_name = discord.ui.TextInput(
label="server_member_role_name",
default=str(server_member_role_name),
style=discord.TextStyle.short,
placeholder="MC-Member",
)
self.new_server_port = discord.ui.TextInput(
label="server_port",
default=str(server_port),
style=discord.TextStyle.short,
placeholder="default: 25565",
)
for input_field in (
self.new_server_ip,
self.new_server_rcon_port,
self.new_server_rcon_password,
self.new_server_member_role_name,
self.new_server_port,
):
self.add_item(input_field)
async def on_submit(self, interaction: discord.Interaction):
try:
new_rcon_port = int(self.new_server_rcon_port.value)
new_server_port = int(self.new_server_port.value)
except ValueError:
await interaction.response.send_message(
"Bitte gib gültige Zahlen für die Ports ein.",
ephemeral=True,
)
return
with open('config.json', 'r', encoding='utf-8') as config_file:
config = json.load(config_file)
config.update(
{
"server_ip": self.new_server_ip.value.strip(),
"server_rcon_port": new_rcon_port,
"server_rcon_password": self.new_server_rcon_password.value.strip(),
"server_member_role_name": self.new_server_member_role_name.value.strip(),
"server_port": new_server_port,
}
)
with open('config.json', 'w', encoding='utf-8') as file:
json.dump(config, file, indent=4)
config_reload()
await interaction.response.send_message(embed=embeds.ConfigChanged(), ephemeral=True)