cleanup
This commit is contained in:
@@ -17,7 +17,6 @@
|
|||||||
"features": {
|
"features": {
|
||||||
"ghcr.io/devcontainers/features/git:1": {},
|
"ghcr.io/devcontainers/features/git:1": {},
|
||||||
"ghcr.io/devcontainers/features/github-cli:1": {},
|
"ghcr.io/devcontainers/features/github-cli:1": {},
|
||||||
"ghcr.io/devcontainers/features/python:1": {}
|
|
||||||
},
|
},
|
||||||
"customizations": {
|
"customizations": {
|
||||||
"vscode": {
|
"vscode": {
|
||||||
@@ -31,7 +30,7 @@
|
|||||||
"settings": {
|
"settings": {
|
||||||
// "python.editor.defaultFormatter": "ms-python.autopep8",
|
// "python.editor.defaultFormatter": "ms-python.autopep8",
|
||||||
"[python]": {
|
"[python]": {
|
||||||
"editor.defaultFormatter": "ms-python.autopep8",
|
"editor.defaultFormatter": "ms-python.python",
|
||||||
"editor.formatOnSave": true
|
"editor.formatOnSave": true
|
||||||
},
|
},
|
||||||
"autopep8.args": [
|
"autopep8.args": [
|
||||||
|
|||||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -5,3 +5,4 @@ src/.env
|
|||||||
discord.py
|
discord.py
|
||||||
*.db
|
*.db
|
||||||
pics
|
pics
|
||||||
|
*.egg-info
|
||||||
71
README.md
71
README.md
@@ -1,71 +0,0 @@
|
|||||||
# Overview
|
|
||||||
|
|
||||||
Kwaylon lives in a Docker container
|
|
||||||
|
|
||||||
- `docker-compose.yml`
|
|
||||||
- Used to easily run the container with some preset configurations
|
|
||||||
- `Dockerfile`
|
|
||||||
- Used by `docker-compose` to (re)build the container, if necessary
|
|
||||||
- Runs `src/main.py` as it's [CMD](https://docs.docker.com/engine/reference/builder/#cmd)
|
|
||||||
- `src/main.py`
|
|
||||||
- Handles getting the login token from an environment variable
|
|
||||||
- Connects event callbacks to Kwaylon methods
|
|
||||||
- Runs the Discord client
|
|
||||||
- `kwaylon.Kwaylon(Client)`
|
|
||||||
- Defines the logic
|
|
||||||
|
|
||||||
# Operation
|
|
||||||
|
|
||||||
## Messages
|
|
||||||
|
|
||||||
Messages are each handled separately with the `Kwaylon.handle_message` callback, which applies the following logic
|
|
||||||
|
|
||||||
1. `Kwaylon.read_command` - Used to manually force Kwaylon to read N days backwards in each `TextChannel` and record the reactions to the database.
|
|
||||||
2. `Kwaylon.respond_to_joke`
|
|
||||||
3. `Kwaylon.respond_to_emoji` - Used for the emoji leaderboard commands
|
|
||||||
|
|
||||||
### Read Command
|
|
||||||
Looks for a mention of the bot with "read N days"
|
|
||||||
|
|
||||||
### Respond to Jokes
|
|
||||||
|
|
||||||
Iterates through each object that inherits from `kwaylon.jokes.Joke`
|
|
||||||
|
|
||||||
### Respond to Emoji Command
|
|
||||||
|
|
||||||
# Files
|
|
||||||
|
|
||||||
## File Structure
|
|
||||||
|
|
||||||
Files are ultimately stored on the NAS in `/home/Kwaylon` for the `john` user, which is mounted to `/mnt/Kwaylon` on the
|
|
||||||
Raspberry Pi
|
|
||||||
|
|
||||||
```
|
|
||||||
└── ./Kwaylon
|
|
||||||
├── data
|
|
||||||
│ └── messages.db
|
|
||||||
├── src
|
|
||||||
| ├── .env
|
|
||||||
| ├── kwaylon
|
|
||||||
| └── main.py
|
|
||||||
├── docker-compose.yml
|
|
||||||
└── Dockerfile
|
|
||||||
```
|
|
||||||
|
|
||||||
## Message Database
|
|
||||||
|
|
||||||
The path of the message database defaults to working with the [file structure](#file-structure) above although it can
|
|
||||||
also be passed into the `Kwaylon` constructor using the `db_path` argument.
|
|
||||||
|
|
||||||
## Mounting on Raspberry Pi
|
|
||||||
|
|
||||||
Run [`dietpi-drive_manager`](https://dietpi.com/docs/dietpi_tools/#dietpi-drive-manager) for access to the wizard for
|
|
||||||
mounting network drives in DietPi.
|
|
||||||
|
|
||||||
- `Add network drive`
|
|
||||||
- `samba`
|
|
||||||
- `JOHN-NAS`
|
|
||||||
- `home/Kwaylon`
|
|
||||||
- `john`
|
|
||||||
- `<SYNOLOGY password>`
|
|
||||||
- `/mnt/Kwaylon`
|
|
||||||
23
pyproject.toml
Normal file
23
pyproject.toml
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
[build-system]
|
||||||
|
requires = ["setuptools"]
|
||||||
|
build-backend = "setuptools.build_meta"
|
||||||
|
|
||||||
|
[project]
|
||||||
|
name = "kwaylon"
|
||||||
|
authors = [
|
||||||
|
{name = "John Lancaster", email = "32917998+jsl12@users.noreply.github.com" }
|
||||||
|
]
|
||||||
|
version = "2.0.0"
|
||||||
|
description = "Alter-ego/nemesis of Kaylon Page"
|
||||||
|
dependencies = [
|
||||||
|
'discord.py',
|
||||||
|
'pandas',
|
||||||
|
'nltk',
|
||||||
|
'python-dotenv',
|
||||||
|
'yfinance',
|
||||||
|
'rich'
|
||||||
|
]
|
||||||
|
requires-python = ">=3.9"
|
||||||
|
|
||||||
|
[project.scripts]
|
||||||
|
kwaylon = "kwaylon:main"
|
||||||
@@ -4,10 +4,6 @@ discord.py
|
|||||||
nltk
|
nltk
|
||||||
python-dotenv
|
python-dotenv
|
||||||
|
|
||||||
# stockquotes
|
|
||||||
yfinance
|
yfinance
|
||||||
beautifulsoup4
|
|
||||||
requests
|
|
||||||
lxml
|
|
||||||
|
|
||||||
rich
|
rich
|
||||||
@@ -1,3 +1,26 @@
|
|||||||
from .jokes import Joke, GifJoke
|
import asyncio
|
||||||
|
import logging
|
||||||
|
import os
|
||||||
|
|
||||||
|
from dotenv import load_dotenv
|
||||||
|
|
||||||
|
from .jokes import GifJoke, Joke
|
||||||
from .kwaylon import Kwaylon
|
from .kwaylon import Kwaylon
|
||||||
from .reactions import ReactionData
|
from .reactions import ReactionData
|
||||||
|
|
||||||
|
|
||||||
|
def main(token_var: str = 'DISCORD_TOKEN'):
|
||||||
|
load_dotenv()
|
||||||
|
loop = asyncio.new_event_loop()
|
||||||
|
loop.create_task(
|
||||||
|
Kwaylon.create_and_start(
|
||||||
|
os.getenv(token_var),
|
||||||
|
logging.DEBUG
|
||||||
|
)
|
||||||
|
)
|
||||||
|
logging.getLogger('discord').setLevel(logging.WARNING)
|
||||||
|
logging.getLogger('urllib3').setLevel(logging.INFO)
|
||||||
|
try:
|
||||||
|
loop.run_forever()
|
||||||
|
except KeyboardInterrupt:
|
||||||
|
pass
|
||||||
|
|||||||
25
src/main.py
25
src/main.py
@@ -1,25 +0,0 @@
|
|||||||
#!/usr/local/bin/python
|
|
||||||
|
|
||||||
import asyncio
|
|
||||||
import logging
|
|
||||||
import os
|
|
||||||
|
|
||||||
from dotenv import load_dotenv
|
|
||||||
|
|
||||||
from kwaylon import Kwaylon
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
load_dotenv()
|
|
||||||
loop = asyncio.new_event_loop()
|
|
||||||
loop.create_task(
|
|
||||||
Kwaylon.create_and_start(
|
|
||||||
os.getenv('DISCORD_TOKEN'),
|
|
||||||
logging.DEBUG
|
|
||||||
)
|
|
||||||
)
|
|
||||||
logging.getLogger('discord').setLevel(logging.WARNING)
|
|
||||||
logging.getLogger('urllib3').setLevel(logging.INFO)
|
|
||||||
try:
|
|
||||||
loop.run_forever()
|
|
||||||
except KeyboardInterrupt:
|
|
||||||
pass
|
|
||||||
Reference in New Issue
Block a user