mirror of
https://wiilab.wiimart.org/wiimart/WiiMartBot
synced 2025-09-02 19:41:03 +02:00
added modifications
This commit is contained in:
parent
0b10c84f90
commit
21ee8b290e
42
LICENSE
42
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.
|
||||
|
146
README.md
146
README.md
@ -1,73 +1,73 @@
|
||||
# WiiMart Discord Bot
|
||||
|
||||
<img src="https://wiimart.github.io/media/branding-bag-no-bg.png" width="100" height="100" align="right" />
|
||||
|
||||
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 <status>`: Set the current status of the bot (requires Admin role).
|
||||
- `/unsetstatus`: Unset the current status of the bot (requires Admin role).
|
||||
- `/error <error_code>`: Get the error message linked with the specified error code.
|
||||
- `/addfc <fc>`: Adds your friend code to the lists of friendcodes.
|
||||
- `/forceaddfc <user> <fc>`: Adds the users friendcode to the lists of friendcodes (requires Admin role).
|
||||
- `/getfc <user>`: 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
|
||||
|
||||
<img src="https://wiimart.github.io/media/branding-bag-no-bg.png" width="100" height="100" align="right" />
|
||||
|
||||
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 <status>`: Set the current status of the bot (requires Admin role).
|
||||
- `/unsetstatus`: Unset the current status of the bot (requires Admin role).
|
||||
- `/error <error_code>`: Get the error message linked with the specified error code.
|
||||
- `/addfc <fc>`: Adds your friend code to the lists of friendcodes.
|
||||
- `/forceaddfc <user> <fc>`: Adds the users friendcode to the lists of friendcodes (requires Admin role).
|
||||
- `/getfc <user>`: 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*
|
||||
|
13
bot.py
13
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")
|
||||
|
@ -1,5 +1,5 @@
|
||||
discord.py
|
||||
dotenv
|
||||
requests
|
||||
sqlite3
|
||||
discord.py
|
||||
dotenv
|
||||
requests
|
||||
sqlite3
|
||||
colorama
|
Loading…
x
Reference in New Issue
Block a user