Move logging to systemd, add instructions
This commit is contained in:
parent
9bf136abf5
commit
f817ad7459
44
README.md
44
README.md
|
@ -13,13 +13,51 @@ Forked from [SparkBot](https://github.com/jkkicks/SparkBot)
|
|||
|
||||
## Installation
|
||||
|
||||
Requires Python 3.
|
||||
- Get this source code:
|
||||
|
||||
- Run `pip install -r requirements.txt`
|
||||
```
|
||||
cd /opt
|
||||
git clone https://git.zyphon.com/will/MineBot.git
|
||||
cd MineBot
|
||||
```
|
||||
|
||||
- It's best to run services as non-root users:
|
||||
```
|
||||
sudo useradd minebot
|
||||
sudo mkdir /home/minebot
|
||||
sudo chown minebot:minebot /home/minebot
|
||||
sudo chown -R minebot:minebot /opt/MineBot
|
||||
```
|
||||
|
||||
- Create a startup script (this is for systemd on i.e. Ubuntu):
|
||||
|
||||
```
|
||||
[Unit]
|
||||
Description=MineBot Service
|
||||
After=multi-user.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=minebot
|
||||
Group=minebot
|
||||
Restart=always
|
||||
WorkingDirectory=/opt/MineBot
|
||||
ExecStart=/usr/bin/python3 /opt/MineBot/main.py
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
```
|
||||
|
||||
- This bot requires Python 3, so ensure you have that on your system.
|
||||
- Run `sudo -u minebot pip install -r requirements.txt` to install Python dependencies.
|
||||
|
||||
## Running
|
||||
|
||||
Run `python3 main.py`
|
||||
- Run `sudo service minebot start` or for testing/development you can run `python3 main.py`
|
||||
- Hide sensitive data from other users:
|
||||
- `sudo chmod 600 /opt/MineBot/bot_data.db /opt/MineBot/bot.log .env`
|
||||
- You probably want to run MineBot automatically on system startup:
|
||||
- `sudo systemctl enable minebot`
|
||||
|
||||
## Usage
|
||||
|
||||
|
|
23
main.py
23
main.py
|
@ -4,7 +4,7 @@ from discord import app_commands
|
|||
import os
|
||||
from dotenv import load_dotenv
|
||||
import sqlite3
|
||||
import logging
|
||||
import logging as logginglib
|
||||
from datetime import datetime, timezone
|
||||
from discord import ui, Interaction
|
||||
import random
|
||||
|
@ -21,8 +21,21 @@ load_dotenv()
|
|||
TOKEN = os.getenv('BOT_TOKEN')
|
||||
|
||||
# Setup logging
|
||||
logging.basicConfig(filename='bot.log', level=logging.INFO)
|
||||
|
||||
logging = logginglib.getLogger(__name__)
|
||||
handler = logginglib.StreamHandler()
|
||||
formatter = logginglib.Formatter('[{levelname:<8}] {message}', style='{')
|
||||
logging.setLevel(logginglib.INFO)
|
||||
handler.setLevel(logginglib.INFO)
|
||||
handler.setFormatter(formatter)
|
||||
logging.addHandler(handler)
|
||||
# Modify Discord logging
|
||||
discLog = logginglib.getLogger('discord')
|
||||
handler = logginglib.StreamHandler()
|
||||
formatter = logginglib.Formatter('[{levelname:<8}] {name}: {message}', style='{')
|
||||
discLog.setLevel(logginglib.INFO)
|
||||
handler.setLevel(logginglib.INFO)
|
||||
handler.setFormatter(formatter)
|
||||
discLog.addHandler(handler)
|
||||
|
||||
## Function and Class Definitions ##
|
||||
|
||||
|
@ -194,7 +207,7 @@ async def listservers(interaction: discord.Interaction):
|
|||
for row in c.fetchall():
|
||||
o += '- **ID**: {}\n - **Status URL**: {}\n - **Join URL**: {}\n'.format(row[0], row[1], row[2])
|
||||
if o == "":
|
||||
o = "No servers."
|
||||
o = "You're not added to any servers."
|
||||
|
||||
await interaction.response.send_message(content=o, ephemeral=True)
|
||||
|
||||
|
@ -313,4 +326,4 @@ with sqlite3.connect('bot_data.db') as conn:
|
|||
conn.commit()
|
||||
|
||||
# Start bot
|
||||
bot.run(TOKEN)
|
||||
bot.run(TOKEN, log_handler=None)
|
||||
|
|
Loading…
Reference in New Issue
Block a user