public
imalexnord
read
Discord-Hetzner-Bot
No description yet
Languages
Repository composition by tracked source files.
Python
100%
Create file
Wiki Documentation
Clone
https://nobgit.com/user/imalexnord/discord-hetzner-bot.git
ssh://[email protected]:2222/user/imalexnord/discord-hetzner-bot.git
Commit
Fuck Windows line seperator
d21b0dd
.gitignore | 1 +
game.py | 172 ++++++++++++++++++++++++++---------------------------
gameserver.py | 149 +++++++++++++++++++++++-----------------------
settings.py.sample | 22 +++----
tokens.py.sample | 10 ++--
5 files changed, 177 insertions(+), 177 deletions(-)
Diff
diff --git a/.gitignore b/.gitignore
index 957b74c..8fa46cc 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,3 @@
settings.py
tokens.py
+__pycache__/
diff --git a/game.py b/game.py
index cae7fc3..82fcd30 100644
--- a/game.py
+++ b/game.py
@@ -1,86 +1,86 @@
-from hcloud import Client
-from hcloud.images.domain import Image
-from hcloud.servers.domain import Server
-from hcloud.server_types.domain import ServerType
-from hcloud.volumes.domain import Volume
-import time
-
-class GameData:
- running = False
-
- def __init__(self, token, name, servertype, snapshot, volume):
- self.name = name
- self.servertype = servertype
- self.client = Client(token=token)
-
- # get id from snapshot
- images = self.client.images.get_all()
- for i in images:
- if i.data_model.description == snapshot:
- imageId = i.data_model.id
- self.snapshot = imageId
-
- # get id from volume
- volumes = self.client.volumes.get_all()
- for i in volumes:
- if i.data_model.name == volume:
- volumeId = i.data_model.id
- self.volume = volumeId
-
- # check for running server
- servers = self.client.servers.get_all()
- for i in servers:
- if i.data_model.name == name:
- self.server = i.data_model
- self.running = True
- print("existing server " + self.server.status)
-
- def start(self):
- if self.running == False:
- print("Starting " + self.name)
- self.running = True
- response = self.client.servers.create(
- self.name,
- server_type=ServerType(name=self.servertype),
- image=Image(self.snapshot),
- volumes=[Volume(self.volume)]
- )
- self.server = response.server;
- while self.server.status != Server.STATUS_RUNNING:
- print(self.server.status)
- time.sleep(2)
- serv = self.client.servers.get_by_id(self.server.id)
- self.server = serv
- print("Server is now running")
- else:
- print(self.name + " is already running")
-
- def stop(self):
- if self.running == True:
- print("Stopping " + self.name)
- self.client.servers.shutdown(self.server)
- while self.server.status != Server.STATUS_OFF:
- print(self.server.status)
- time.sleep(2)
- serv = self.client.servers.get_by_id(self.server.id)
- self.server = serv
- print("Server is now stopped")
- self.client.volumes.detach(Volume(self.volume))
- self.client.servers.delete(self.server)
- self.running = False
- else:
- print(self.name + " isn't running")
-
- def status(self):
- msg = self.name
- if self.running:
- msg += " is running under\n"
- ip = self.server.public_net.ipv4.ip
- msg += ip + "\n"
- else:
- msg += " isn't running"
- return msg
-
- def isRunning(self):
- return self.running
-
+from hcloud import Client
+from hcloud.images.domain import Image
+from hcloud.servers.domain import Server
+from hcloud.server_types.domain import ServerType
+from hcloud.volumes.domain import Volume
+import time
+
+class GameData:
+ running = False
+
+ def __init__(self, token, name, servertype, snapshot, volume):
+ self.name = name
+ self.servertype = servertype
+ self.client = Client(token=token)
+
+ # get id from snapshot
+ images = self.client.images.get_all()
+ for i in images:
+ if i.data_model.description == snapshot:
+ imageId = i.data_model.id
+ self.snapshot = imageId
+
+ # get id from volume
+ volumes = self.client.volumes.get_all()
+ for i in volumes:
+ if i.data_model.name == volume:
+ volumeId = i.data_model.id
+ self.volume = volumeId
+
+ # check for running server
+ servers = self.client.servers.get_all()
+ for i in servers:
+ if i.data_model.name == name:
+ self.server = i.data_model
+ self.running = True
+ print("existing server " + self.server.status)
+
+ def start(self):
+ if self.running == False:
+ print("Starting " + self.name)
+ self.running = True
+ response = self.client.servers.create(
+ self.name,
+ server_type=ServerType(name=self.servertype),
+ image=Image(self.snapshot),
+ volumes=[Volume(self.volume)]
+ )
+ self.server = response.server;
+ while self.server.status != Server.STATUS_RUNNING:
+ print(self.server.status)
+ time.sleep(2)
+ serv = self.client.servers.get_by_id(self.server.id)
+ self.server = serv
+ print("Server is now running")
+ else:
+ print(self.name + " is already running")
+
+ def stop(self):
+ if self.running == True:
+ print("Stopping " + self.name)
+ self.client.servers.shutdown(self.server)
+ while self.server.status != Server.STATUS_OFF:
+ print(self.server.status)
+ time.sleep(2)
+ serv = self.client.servers.get_by_id(self.server.id)
+ self.server = serv
+ print("Server is now stopped")
+ self.client.volumes.detach(Volume(self.volume))
+ self.client.servers.delete(self.server)
+ self.running = False
+ else:
+ print(self.name + " isn't running")
+
+ def status(self):
+ msg = self.name
+ if self.running:
+ msg += " is running under\n"
+ ip = self.server.public_net.ipv4.ip
+ msg += ip + "\n"
+ else:
+ msg += " isn't running"
+ return msg
+
+ def isRunning(self):
+ return self.running
+
diff --git a/gameserver.py b/gameserver.py
index ded95de..0171856 100755
--- a/gameserver.py
+++ b/gameserver.py
@@ -1,75 +1,74 @@
-#! /usr/bin/python3
-
-from tokens import *
-from settings import *
-from game import *
-from discord import Game
-import discord
-
-client = discord.Client()
-
[email protected]
-async def on_message(message):
- # we do not want the bot to reply to itself
- if message.author == client.user:
- return
-
- if message.content.startswith(BOT_PREFIX + "help"):
- msg = ("!help - prints this help\n"
- "!ping - simple online check\n"
- "!start GAME - starts a server for GAME\n"
- "!stop GAME - stops the server for GAME\n"
- "!status [GAME] - prints basic infos about the server for GAME"
- ).format(message)
- await client.send_message(message.channel, msg)
- elif message.content.startswith(BOT_PREFIX + "ping"):
- msg = "I'm online {0.author.mention}".format(message)
- await client.send_message(message.channel, msg)
- elif message.content.startswith(BOT_PREFIX + "start"):
- cmd = message.content.split("start", 1)[1].lower().split()
- if not cmd:
- msg = ("Syntax error:\n"
- "!start GAME"
- )
- else:
- for i in GAMES:
- if i.name.lower() == cmd[0]:
- if i.isRunning() == False:
- await client.change_presence(game=Game(name="starting server..."))
- i.start()
- await client.change_presence(game=Game(name="ready"))
- msg = i.status()
- await client.send_message(message.channel, msg)
- elif message.content.startswith(BOT_PREFIX + "stop"):
- cmd = message.content.split("stop", 1)[1].lower().split()
- if not cmd:
- msg = ("Syntax error:\n"
- "!stop GAME"
- )
- else:
- for i in GAMES:
- if i.name.lower() == cmd[0]:
- if i.isRunning() == True:
- await client.change_presence(game=Game(name="stopping server..."))
- i.stop()
- await client.change_presence(game=Game(name="ready"))
- msg = i.status()
- await client.send_message(message.channel, msg)
- elif message.content.startswith(BOT_PREFIX + "status"):
- cmd = message.content.split("status", 1)[1].lower().split()
- for i in GAMES:
- if not cmd:
- msg = i.status()
- elif i.name.lower() == cmd[0]:
- msg = i.status()
- await client.send_message(message.channel, msg)
-
[email protected]
-async def on_ready():
- print("Logged in as")
- print(client.user.name)
- print(client.user.id)
- print("------")
- await client.change_presence(game=Game(name="ready"))
-
-client.run(DISCORD_TOKEN)
+#! /usr/bin/python3
+from tokens import *
+from settings import *
+from game import *
+from discord import Game
+import discord
+
+client = discord.Client()
+
[email protected]
+async def on_message(message):
+ # we do not want the bot to reply to itself
+ if message.author == client.user:
+ return
+
+ if message.content.startswith(BOT_PREFIX + "help"):
+ msg = ("!help - prints this help\n"
+ "!ping - simple online check\n"
+ "!start GAME - starts a server for GAME\n"
+ "!stop GAME - stops the server for GAME\n"
+ "!status [GAME] - prints basic infos about the server for GAME"
+ ).format(message)
+ await client.send_message(message.channel, msg)
+ elif message.content.startswith(BOT_PREFIX + "ping"):
+ msg = "I'm online {0.author.mention}".format(message)
+ await client.send_message(message.channel, msg)
+ elif message.content.startswith(BOT_PREFIX + "start"):
+ cmd = message.content.split("start", 1)[1].lower().split()
+ if not cmd:
+ msg = ("Syntax error:\n"
+ "!start GAME"
+ )
+ else:
+ for i in GAMES:
+ if i.name.lower() == cmd[0]:
+ if i.isRunning() == False:
+ await client.change_presence(game=Game(name="starting server..."))
+ i.start()
+ await client.change_presence(game=Game(name="ready"))
+ msg = i.status()
+ await client.send_message(message.channel, msg)
+ elif message.content.startswith(BOT_PREFIX + "stop"):
+ cmd = message.content.split("stop", 1)[1].lower().split()
+ if not cmd:
+ msg = ("Syntax error:\n"
+ "!stop GAME"
+ )
+ else:
+ for i in GAMES:
+ if i.name.lower() == cmd[0]:
+ if i.isRunning() == True:
+ await client.change_presence(game=Game(name="stopping server..."))
+ i.stop()
+ await client.change_presence(game=Game(name="ready"))
+ msg = i.status()
+ await client.send_message(message.channel, msg)
+ elif message.content.startswith(BOT_PREFIX + "status"):
+ cmd = message.content.split("status", 1)[1].lower().split()
+ for i in GAMES:
+ if not cmd:
+ msg = i.status()
+ elif i.name.lower() == cmd[0]:
+ msg = i.status()
+ await client.send_message(message.channel, msg)
+
[email protected]
+async def on_ready():
+ print("Logged in as")
+ print(client.user.name)
+ print(client.user.id)
+ print("------")
+ await client.change_presence(game=Game(name="ready"))
+
+client.run(DISCORD_TOKEN)
diff --git a/settings.py.sample b/settings.py.sample
index 5904589..1778eb5 100644
--- a/settings.py.sample
+++ b/settings.py.sample
@@ -1,11 +1,11 @@
-from game import *
-from tokens import *
-
-
-BOT_PREFIX = "!"
-
-
-sample = GameData(HETZNER_API_TOKEN, "Name", "ServerType", "Snapshot", "Volume")
-
-
-GAMES = [sample]
+from game import *
+from tokens import *
+
+
+BOT_PREFIX = "!"
+
+
+sample = GameData(HETZNER_API_TOKEN, "Name", "ServerType", "Snapshot", "Volume")
+
+
+GAMES = [sample]
diff --git a/tokens.py.sample b/tokens.py.sample
index 13d27e8..d6917d4 100644
--- a/tokens.py.sample
+++ b/tokens.py.sample
@@ -1,5 +1,5 @@
-
-DISCORD_TOKEN = ''
-
-HETZNER_API_TOKEN = ''
-
+
+DISCORD_TOKEN = ''
+
+HETZNER_API_TOKEN = ''
+