mirror of
https://github.com/GaMeNu/HFCNotificator.git
synced 2024-11-16 15:24:51 +02:00
v2.2.4
Added automatic error logging
This commit is contained in:
parent
887b52f5d4
commit
da74ad1948
30
db_access.py
30
db_access.py
@ -1,3 +1,4 @@
|
|||||||
|
import asyncio
|
||||||
import json
|
import json
|
||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
@ -229,19 +230,28 @@ class DBAccess:
|
|||||||
else:
|
else:
|
||||||
self.log.addHandler(logging.StreamHandler())
|
self.log.addHandler(logging.StreamHandler())
|
||||||
|
|
||||||
try:
|
self.connection = None
|
||||||
self.connection = mysql.connect(
|
for i in range(12):
|
||||||
host='localhost',
|
try:
|
||||||
user=DB_USERNAME,
|
self.connection = mysql.connect(
|
||||||
password=DB_PASSWORD,
|
host='localhost',
|
||||||
database='hfc_db'
|
user=DB_USERNAME,
|
||||||
)
|
password=DB_PASSWORD,
|
||||||
except mysql.Error as e:
|
database='hfc_db'
|
||||||
self.connection.reconnect(attempts=12, delay=5)
|
)
|
||||||
|
except mysql.Error as e:
|
||||||
|
self.log.error(f'Failed to connect to database. This is attempt {i+1}')
|
||||||
|
|
||||||
|
self.connection = mysql.connect(
|
||||||
|
host='localhost',
|
||||||
|
user=DB_USERNAME,
|
||||||
|
password=DB_PASSWORD,
|
||||||
|
database='hfc_db'
|
||||||
|
)
|
||||||
|
|
||||||
def __del__(self):
|
def __del__(self):
|
||||||
self.connection.close()
|
if self.connection is not None:
|
||||||
|
self.connection.close()
|
||||||
|
|
||||||
def add_area(self, area_id: int, area_name: str):
|
def add_area(self, area_id: int, area_name: str):
|
||||||
with self.get_cursor() as crsr:
|
with self.get_cursor() as crsr:
|
||||||
|
38
main.py
38
main.py
@ -1,3 +1,9 @@
|
|||||||
|
import datetime
|
||||||
|
import sys
|
||||||
|
import traceback
|
||||||
|
import types
|
||||||
|
from types import TracebackType
|
||||||
|
|
||||||
import discord
|
import discord
|
||||||
from discord.ext import commands, tasks
|
from discord.ext import commands, tasks
|
||||||
from dotenv import load_dotenv
|
from dotenv import load_dotenv
|
||||||
@ -32,8 +38,38 @@ async def on_message(msg: discord.Message):
|
|||||||
|
|
||||||
@bot.event
|
@bot.event
|
||||||
async def on_ready():
|
async def on_ready():
|
||||||
await Notificator.setup(bot, handler)
|
|
||||||
await bot.change_presence(activity=discord.Activity(name='for HFC alerts.', type=discord.ActivityType.watching))
|
await bot.change_presence(activity=discord.Activity(name='for HFC alerts.', type=discord.ActivityType.watching))
|
||||||
|
|
||||||
|
botdata_path = os.path.join(os.path.realpath(__file__), '..', 'botdata')
|
||||||
|
if not os.path.isdir(botdata_path):
|
||||||
|
os.mkdir(botdata_path)
|
||||||
|
|
||||||
|
botdata_backup_path = os.path.join(botdata_path, 'backups')
|
||||||
|
if not os.path.isdir(botdata_backup_path):
|
||||||
|
os.mkdir(botdata_backup_path)
|
||||||
|
|
||||||
|
await Notificator.setup(bot, handler)
|
||||||
|
|
||||||
|
|
||||||
|
@bot.event
|
||||||
|
async def on_error(event, *args, **kwargs):
|
||||||
|
e: tuple[type, Exception, types.TracebackType] = sys.exc_info()
|
||||||
|
time = datetime.datetime.now()
|
||||||
|
path = os.path.join(os.path.realpath(__file__), '..', 'botdata', 'backups', f'ERRLOG_{time.strftime("%Y-%m-%d_%H-%M-%S")}.txt')
|
||||||
|
tb_str = '\n'.join(traceback.format_tb(e[2]))
|
||||||
|
|
||||||
|
data = f"""
|
||||||
|
An error has occurred! Don't worry, I saved an automatic log for ya :)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Rough DateTime: {time.strftime("%Y-%m-%d %H:%M:%S")}
|
||||||
|
Error: {e[0].__name__}: {e[1]}
|
||||||
|
|
||||||
|
Traceback:
|
||||||
|
----------
|
||||||
|
{tb_str}
|
||||||
|
"""
|
||||||
|
|
||||||
|
with open(path, 'w') as f:
|
||||||
|
f.write(data)
|
||||||
|
|
||||||
bot.run(token=TOKEN, log_handler=handler)
|
bot.run(token=TOKEN, log_handler=handler)
|
||||||
|
Loading…
Reference in New Issue
Block a user