diff --git a/LICENSE b/LICENSE
index 48c81d2..79946c7 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,21 +1,21 @@
-MIT License
-
-Copyright (c) 2025 WiiMart
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
+MIT License
+
+Copyright (c) 2025 WiiMart
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/README.md b/README.md
index 4d09f89..4ee0ec5 100644
--- a/README.md
+++ b/README.md
@@ -1,73 +1,73 @@
-# WiiMart Discord Bot
-
-
-
-This is a Discord bot built using the `discord.py` library that provides functionalities for managing and querying error codes related to a specific service. The bot can respond to commands, check the status of a service, and manage error codes stored in a SQLite database.
-
-## Features
-
-- Query error messages based on error codes.
-- Set and unset the bot's status.
-- Check the status of a service.
-- Uses SQLite for storing error codes and messages.
-- Uses MySQL for managing friend codes.
-
-## Requirements
-
-- Python 3.8 or higher
-- `discord.py` library
-- `python-dotenv` for environment variable management
-- `requests` for making HTTP requests
-- SQLite for database management (for error codes)
-- MySQL connector for managing friend codes
-
-## Installation
-
-1. **Clone the repository**:
- `git clone https://github.com/WiiMart/WiiMartBot.git`
- `cd WiiMartBot`
-
-2. **Install the required packages**:
- `pip install discord.py python-dotenv requests mysql-connector-python`
-
-3. **Create a `.env` file** in the root directory of your project with the following format:
-```
-token=your token here
-status="Not Set"
-mqlu=mysqluser
-mqlp=mysqlpassword
-mqld=mysqldb
-mqur=mysqlurl
-mqpo=mysqlport
-```
-
-## Usage
-
-1. **Run the bot**:
-`python bot.py`
-
-2. **Commands**:
-- `/status`: Check the current status of the service.
-- `/setstatus `: Set the current status of the bot (requires Admin role).
-- `/unsetstatus`: Unset the current status of the bot (requires Admin role).
-- `/error `: Get the error message linked with the specified error code.
-- `/addfc `: Adds your friend code to the lists of friendcodes.
-- `/forceaddfc `: Adds the users friendcode to the lists of friendcodes (requires Admin role).
-- `/getfc `: Gets the friend code of the specified user.
-
-## Database Management
-
-The bot uses a SQLite database to store error codes and their corresponding messages. The database is created and populated automatically when the bot starts.
-
-The MySQL database is to store friend codes from users. It is not automatically populated, a table with usersfc is needed, with 2 collums, one for the userid as varchar of 20 and one for their friend code as fc as a varcahr of 16.
-
-### Error Codes Format
-
-The error codes are defined in the script and can include:
-- Standalone codes (e.g., `204013`)
-- Ranges (e.g., `204019-204041`), which will be expanded into individual codes.
-- Wildcard codes (e.g., `2056XX`), which can match multiple codes.
-
-*WiiMart is not affiliated with Nintendo or any related parties.*
-
-*To contact, please send an email to support@wiimart.org*
+# WiiMart Discord Bot
+
+
+
+This is a Discord bot built using the `discord.py` library that provides functionalities for managing and querying error codes related to a specific service. The bot can respond to commands, check the status of a service, and manage error codes stored in a SQLite database.
+
+## Features
+
+- Query error messages based on error codes.
+- Set and unset the bot's status.
+- Check the status of a service.
+- Uses SQLite for storing error codes and messages.
+- Uses MySQL for managing friend codes.
+
+## Requirements
+
+- Python 3.8 or higher
+- `discord.py` library
+- `python-dotenv` for environment variable management
+- `requests` for making HTTP requests
+- SQLite for database management (for error codes)
+- MySQL connector for managing friend codes
+
+## Installation
+
+1. **Clone the repository**:
+ `git clone https://github.com/WiiMart/WiiMartBot.git`
+ `cd WiiMartBot`
+
+2. **Install the required packages**:
+ `pip install discord.py python-dotenv requests mysql-connector-python`
+
+3. **Create a `.env` file** in the root directory of your project with the following format:
+```
+token=your token here
+status="Not Set"
+mqlu=mysqluser
+mqlp=mysqlpassword
+mqld=mysqldb
+mqur=mysqlurl
+mqpo=mysqlport
+```
+
+## Usage
+
+1. **Run the bot**:
+`python bot.py`
+
+2. **Commands**:
+- `/status`: Check the current status of the service.
+- `/setstatus `: Set the current status of the bot (requires Admin role).
+- `/unsetstatus`: Unset the current status of the bot (requires Admin role).
+- `/error `: Get the error message linked with the specified error code.
+- `/addfc `: Adds your friend code to the lists of friendcodes.
+- `/forceaddfc `: Adds the users friendcode to the lists of friendcodes (requires Admin role).
+- `/getfc `: Gets the friend code of the specified user.
+
+## Database Management
+
+The bot uses a SQLite database to store error codes and their corresponding messages. The database is created and populated automatically when the bot starts.
+
+The MySQL database is to store friend codes from users. It is not automatically populated, a table with usersfc is needed, with 2 collums, one for the userid as varchar of 20 and one for their friend code as fc as a varcahr of 16.
+
+### Error Codes Format
+
+The error codes are defined in the script and can include:
+- Standalone codes (e.g., `204013`)
+- Ranges (e.g., `204019-204041`), which will be expanded into individual codes.
+- Wildcard codes (e.g., `2056XX`), which can match multiple codes.
+
+*WiiMart is not affiliated with Nintendo or any related parties.*
+
+*To contact, please send an email to support@wiimart.org*
diff --git a/bot.py b/bot.py
index 311eaf2..2bb6218 100644
--- a/bot.py
+++ b/bot.py
@@ -8,6 +8,7 @@ import logging
import os
import sqlite3
import mysql.connector
+import sys
from discord.ext import commands
from mysql.connector import Error
from dotenv import load_dotenv
@@ -19,7 +20,7 @@ class ColoredFormatter(logging.Formatter):
"""Adds colors to log levels"""
COLORS = {
'DEBUG': Fore.CYAN,
- 'INFO': Fore.GREEN,
+ 'INFO': Fore.BLUE,
'WARNING': Fore.YELLOW,
'ERROR': Fore.RED,
'CRITICAL': Fore.RED + Style.BRIGHT
@@ -33,10 +34,10 @@ class ColoredFormatter(logging.Formatter):
# Your original config with colors added
logging.basicConfig(
- level=logging.INFO,
+ level=logging.DEBUG,
format='%(levelname)s at %(asctime)s : %(message)s',
datefmt='%H:%M:%S',
- handlers=[logging.StreamHandler()]
+ handlers=[logging.StreamHandler(sys.stderr)]
)
# Apply the colored formatter
@@ -52,7 +53,7 @@ for handler in logger.handlers:
TAILSCALE_IP1 = "100.118.134.32"
TAILSCALE_IP2 = "100.95.192.63"
-LOCK_PORT = 30000
+LOCK_PORT = 30000
TIMEOUT = 5.0
CHECK_INTERVAL = 10
@@ -110,7 +111,7 @@ class LeaderElection:
try:
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.settimeout(TIMEOUT)
- s.connect((TAILSCALE_IP1, LOCK_PORT))
+ s.connect((TAILSCALE_IP2, LOCK_PORT))
return True
except (ConnectionRefusedError, socket.timeout, OSError):
return False
@@ -130,7 +131,7 @@ def health_check(leader_election):
try:
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.settimeout(TIMEOUT)
- s.connect((TAILSCALE_IP2, LOCK_PORT))
+ s.connect((TAILSCALE_IP1, LOCK_PORT))
except:
# Lost leadership
#print("Lost leadership")
diff --git a/requirements.txt b/requirements.txt
index 63b1b71..12d924b 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,5 +1,5 @@
-discord.py
-dotenv
-requests
-sqlite3
+discord.py
+dotenv
+requests
+sqlite3
colorama
\ No newline at end of file