summaryrefslogtreecommitdiff
path: root/optional
diff options
context:
space:
mode:
authorstolenvw <stolenvw@hotmail.com>2021-04-10 15:28:44 -0400
committerstolenvw <stolenvw@hotmail.com>2021-04-10 15:28:44 -0400
commit7c58f5a97abf9ac5e7353940b0ddc50a585d9066 (patch)
tree7c58c1b3a856822495f95701f2417b0ec8c9ab2b /optional
parent10003220489fe8493021e35f7243a4f63525f376 (diff)
Major rewrite, Added optional commands for displaying V+ config settings
Diffstat (limited to 'optional')
-rw-r--r--optional/README.md21
-rw-r--r--optional/pluscmds.py70
-rw-r--r--optional/plussettingstodb.py101
3 files changed, 192 insertions, 0 deletions
diff --git a/optional/README.md b/optional/README.md
new file mode 100644
index 0000000..9c86307
--- /dev/null
+++ b/optional/README.md
@@ -0,0 +1,21 @@
+# Optional Addons
+Optional commands for the bot
+
+## Pluscmds:
+### Info:
+`plussettingstodb.py` Will make a new table in the MySQL database and load the contents from `vplusfile` setting in `config.py` to the table. If the table exist it will delete the table and remake it
+
+`pluscmds.py` Is bot commands for displaying Valheim Plus setting from the table created by `plussettingstodb.py`
+
+### Setup:
+Move `plussettingstodb.py` to the `code` dir
+Move `pluscmds.py` to the `code/botcmds` dir
+
+### Usage:
+`python3 plussettingstodb.py` While in the `code` dir. Script will run and exit when finished. **NOTE:** This will have to be done every time you make a change to the Valheim Plus configuration file.
+
+After moving the `pluscmds.py` restart the bot. This only needs to be done once, you can run `plussettingstodb.py` at anytime without having to restart the bot.
+
+### Example Output:
+## Pluscmds:
+![](../example/vplushelp.png)
diff --git a/optional/pluscmds.py b/optional/pluscmds.py
new file mode 100644
index 0000000..6c91147
--- /dev/null
+++ b/optional/pluscmds.py
@@ -0,0 +1,70 @@
+import discord, typing
+from discord.ext import commands
+
+class Plus(commands.Cog):
+ """
+ Plus commands
+ """
+
+ def __init__(self, bot):
+ self.bot = bot
+
+ @commands.command(name='vplus',
+ brief="Plus settings",
+ help="Shows Plus mod settings. \n Available arg: enabled, disabled, section name \n Enabled: Shows enabled sections. \n Disabled: Shows disabled sections. \n Section Name: Shows settings for that section.",
+ usage="<arg>",
+ )
+ async def vplus(self, ctx, arg: typing.Optional[str] = 'help'):
+ ldrembed = discord.Embed(title="Valheim Plus Settings " + arg + "", color=0x33a163)
+ botsql = self.bot.get_cog('BotSQL')
+ mycursor = await botsql.get_cursor()
+ if arg == "help":
+ ldrembed.add_field(name="{}vplus enabled".format(self.bot.command_prefix),
+ value="Shows list of enabled sections.\n Example: `{}vplus enabled`".format(self.bot.command_prefix),
+ inline=True)
+ ldrembed.add_field(name="{}vplus disabled".format(self.bot.command_prefix),
+ value="Shows list of disabled sections.\n Example: `{}vplus disabled`".format(self.bot.command_prefix),
+ inline=True)
+ ldrembed.add_field(name="{}vplus <section>".format(self.bot.command_prefix),
+ value="Shows setting for section.\n Example: `{}vplus Fermenter`".format(self.bot.command_prefix),
+ inline=True)
+ elif arg == "enabled":
+ sql = """SELECT section FROM vplus WHERE enabled = 'true' AND option1 = '0'"""
+ mycursor.execute(sql)
+ Info = mycursor.fetchall()
+ row_count = mycursor.rowcount
+ vcount = 0
+ for ind in Info:
+ if vcount == 1:
+ description = description + '\n' + ind[0]
+ else:
+ description = ind[0]
+ vcount = 1
+ ldrembed = discord.Embed(title="Valheim Plus Settings " + arg + "", description="" + description + "", color=0x33a163)
+ elif arg == "disabled":
+ sql = """SELECT section FROM vplus WHERE enabled = 'false' AND option1 = '0'"""
+ mycursor.execute(sql)
+ Info = mycursor.fetchall()
+ row_count = mycursor.rowcount
+ vcount = 0
+ for ind in Info:
+ if vcount == 1:
+ description = description + '\n' + ind[0]
+ else:
+ description = ind[0]
+ vcount = 1
+ ldrembed = discord.Embed(title="Valheim Plus Settings " + arg + "", description="" + description + "", color=0x33a163)
+ else:
+ sql = """SELECT option1, settings FROM vplus WHERE section = '%s' AND option1 != '0'""" % (arg)
+ mycursor.execute(sql)
+ Info = mycursor.fetchall()
+ row_count = mycursor.rowcount
+ for ind in Info:
+ ldrembed.add_field(name="{}".format(ind[0]),
+ value="{}".format(ind[1]),
+ inline=False)
+ mycursor.close()
+ await ctx.send(embed=ldrembed)
+
+def setup(bot):
+ bot.add_cog(Plus(bot))
diff --git a/optional/plussettingstodb.py b/optional/plussettingstodb.py
new file mode 100644
index 0000000..25a948f
--- /dev/null
+++ b/optional/plussettingstodb.py
@@ -0,0 +1,101 @@
+import os, re, config, sys, mysql.connector
+from colorama import Fore, Style, init
+from mysql.connector import errorcode
+from config import SQL_HOST as MYhost
+from config import SQL_PORT as MYport
+from config import SQL_USER as MYuser
+from config import SQL_PASS as MYpass
+from config import SQL_DATABASE as MYbase
+from config import vplusfile
+
+section = '^\[([\w]*)\]$'
+settings = '^(\w*) = (\w*)$'
+
+TABLES = {}
+TABLES['vplus'] = (
+ "CREATE TABLE `vplus` ("
+ " `id` int NOT NULL AUTO_INCREMENT,"
+ " `section` varchar(75) DEFAULT NULL,"
+ " `enabled` varchar(75) DEFAULT NULL,"
+ " `option1` varchar(75) DEFAULT NULL,"
+ " `settings` varchar(75) DEFAULT NULL,"
+ " PRIMARY KEY (`id`)"
+ ") ENGINE=InnoDB")
+
+def mydbconnect():
+ global mydb
+ mydb = mysql.connector.connect(
+ host=MYhost,
+ user=MYuser,
+ password=MYpass,
+ database=MYbase,
+ port=MYport,
+ )
+ try:
+ if mydb.is_connected():
+ db_Info = mydb.get_server_info()
+ print(Fore.GREEN + "Connected to MySQL database... MySQL Server version ", db_Info + Style.RESET_ALL)
+ except mysql.connector.Error as err:
+ print(Fore.RED + err + 'From MySQL database' + Style.RESET_ALL)
+
+mydbconnect()
+
+def maketable():
+ mycursor = mydb.cursor()
+ for table_name in TABLES:
+ table_description = TABLES[table_name]
+ try:
+ print(Fore.GREEN + "Creating table {}: ".format(table_name), end='')
+ mycursor.execute(table_description)
+ except mysql.connector.Error as err:
+ if err.errno == errorcode.ER_TABLE_EXISTS_ERROR:
+ print(Fore.RED + "already exists. Droping table and trying again." + Style.RESET_ALL)
+ sql = "DROP TABLE vplus"
+ mycursor.execute(sql)
+ maketable()
+ else:
+ print(Fore.RED + err.msg + Style.RESET_ALL)
+ else:
+ print(Fore.GREEN + "OK" + Style.RESET_ALL)
+ mycursor.close()
+
+def mainloop():
+ try:
+ plusconf = open(vplusfile, mode="r")
+ Lines = plusconf.readlines()
+ print(Fore.GREEN + "Adding Valheim Plus settings to table vplus" + Style.RESET_ALL)
+ mycursor = mydb.cursor()
+ section1 = "ValheimPlus"
+ enabled1 = 0
+ option = 0
+ setting = 0
+ for line in Lines:
+ insert = 0
+ if(re.search(section, line)):
+ section1 = re.search(section, line).group(1)
+ insert = 0
+ enabled1 = 0
+ option = 0
+ setting = 0
+ if(re.search(settings, line)):
+ what = re.search(settings, line).group(1)
+ setting = re.search(settings, line).group(2)
+ insert = 1
+ if what == "enabled":
+ enabled1 = setting
+ else:
+ option = what
+ if insert == 1:
+ sql = """INSERT INTO vplus (section, enabled, option1, settings) VALUES ('%s', '%s', '%s', '%s')""" % (section1, enabled1, option, setting)
+ mycursor.execute(sql)
+ mydb.commit()
+ plusconf.close()
+ mycursor.close()
+ print(Fore.GREEN + "Done" + Style.RESET_ALL)
+ except IOError:
+ print(Fore.RED + 'Could not read Valheim Plus config file. Please check config.py' + Style.RESET_ALL)
+
+maketable()
+mainloop()
+mydb.close()
+exit()