Initial commit
This commit is contained in:
parent
553d982224
commit
86de0dc6aa
7
.gitignore
vendored
7
.gitignore
vendored
@ -160,3 +160,10 @@ cython_debug/
|
||||
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
|
||||
#.idea/
|
||||
|
||||
# Project
|
||||
.vscode
|
||||
venv
|
||||
venv_linux
|
||||
venv_windows
|
||||
|
||||
config.json
|
20
.renovaterc
Normal file
20
.renovaterc
Normal file
@ -0,0 +1,20 @@
|
||||
{
|
||||
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
|
||||
"extends": [
|
||||
"config:base"
|
||||
],
|
||||
"baseBranches": [
|
||||
"dev"
|
||||
],
|
||||
"packageRules": [
|
||||
{
|
||||
"matchUpdateTypes": [
|
||||
"minor",
|
||||
"patch",
|
||||
"pin",
|
||||
"digest"
|
||||
],
|
||||
"automerge": true
|
||||
}
|
||||
]
|
||||
}
|
18
config_example.json
Normal file
18
config_example.json
Normal file
@ -0,0 +1,18 @@
|
||||
{
|
||||
"token": "",
|
||||
"owner": 0,
|
||||
"guild": 0,
|
||||
"admins": [],
|
||||
"status": "crying clowns",
|
||||
"database": {
|
||||
"user": null,
|
||||
"password": null,
|
||||
"host": "127.0.0.1",
|
||||
"port": 27017,
|
||||
"name": "holo_discord"
|
||||
},
|
||||
"logging": {
|
||||
"size": 512,
|
||||
"location": "logs"
|
||||
}
|
||||
}
|
41
main.py
Normal file
41
main.py
Normal file
@ -0,0 +1,41 @@
|
||||
import asyncio
|
||||
import logging
|
||||
|
||||
from discord import Activity, ActivityType
|
||||
|
||||
from modules.scheduled import scheduler
|
||||
from modules.client import client
|
||||
from modules.utils import config_get
|
||||
|
||||
logging.basicConfig(
|
||||
level=logging.INFO,
|
||||
format="%(name)s.%(funcName)s | %(levelname)s | %(message)s",
|
||||
datefmt="[%X]",
|
||||
)
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
try:
|
||||
import uvloop # type: ignore
|
||||
|
||||
uvloop.install()
|
||||
except ImportError:
|
||||
pass
|
||||
|
||||
|
||||
@client.event
|
||||
async def on_ready():
|
||||
|
||||
logger.info(f"Logged in as {client.user}")
|
||||
await client.change_presence(activity=Activity(type=ActivityType.listening, name=await config_get("status")))
|
||||
|
||||
def main():
|
||||
try:
|
||||
scheduler.start()
|
||||
client.run(asyncio.run(config_get("token")))
|
||||
except KeyboardInterrupt:
|
||||
scheduler.shutdown()
|
||||
exit()
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
5
modules/client.py
Normal file
5
modules/client.py
Normal file
@ -0,0 +1,5 @@
|
||||
from discord import Intents, Bot
|
||||
|
||||
intents = Intents().all()
|
||||
intents.members = True
|
||||
client = Bot(intents=intents)
|
3
modules/scheduled.py
Normal file
3
modules/scheduled.py
Normal file
@ -0,0 +1,3 @@
|
||||
from apscheduler.schedulers.asyncio import AsyncIOScheduler
|
||||
|
||||
scheduler = AsyncIOScheduler()
|
35
modules/utils.py
Normal file
35
modules/utils.py
Normal file
@ -0,0 +1,35 @@
|
||||
from typing import Any
|
||||
import aiofiles
|
||||
from ujson import loads, dumps
|
||||
|
||||
|
||||
async def json_read(path: str) -> Any:
|
||||
async with aiofiles.open(path, mode="r", encoding="utf-8") as f:
|
||||
data = await f.read()
|
||||
return loads(data)
|
||||
|
||||
|
||||
async def json_write(data: Any, path: str) -> None:
|
||||
async with aiofiles.open(path, mode="w", encoding="utf-8") as f:
|
||||
await f.write(dumps(data, ensure_ascii=False, escape_forward_slashes=False))
|
||||
|
||||
|
||||
async def config_get(key: str, *path: str) -> Any:
|
||||
this_key = await json_read("config.json")
|
||||
for dict_key in path:
|
||||
this_key = this_key[dict_key]
|
||||
return this_key[key]
|
||||
|
||||
|
||||
async def config_set(key: str, value: Any, *path: str) -> None:
|
||||
this_dict = await json_read("config.json")
|
||||
string = "this_dict"
|
||||
for arg in path:
|
||||
string += f'["{arg}"]'
|
||||
if type(value) in [str]:
|
||||
string += f'["{key}"] = "{value}"'
|
||||
else:
|
||||
string += f'["{key}"] = {value}'
|
||||
exec(string)
|
||||
await json_write(this_dict, "config.json")
|
||||
return
|
5
requirements.txt
Normal file
5
requirements.txt
Normal file
@ -0,0 +1,5 @@
|
||||
aiofiles==23.1.0
|
||||
apscheduler==3.10.1
|
||||
py-cord[speed]==2.4.1
|
||||
pymongo==4.3.3
|
||||
ujson==5.7.0
|
Loading…
Reference in New Issue
Block a user