This commit is contained in:
Ian Burgess 2024-06-19 19:06:24 -06:00
parent a125c7e98d
commit 229669d557
14 changed files with 71 additions and 62 deletions

View File

@ -1,7 +1,7 @@
FROM python:3.12-slim
RUN mkdir -p /app
RUN mkdir -p /app/bin
COPY bot/. /app
COPY . /app
COPY bin/storage.py /app/bin
WORKDIR /app
RUN pip install -r requirements.txt

View File

@ -1,10 +1,32 @@
class storage:
def __init__(self, serverid, db):
self.serverdb = db[str(serverid)]
def db(self, module, key, value=None):
try : r = self.serverdb.find_one({"module": module}).get(key)
except AttributeError: r = None
def __init__(self, server_id, db):
self.server_id = str(server_id)
self.db = db
self.collection = db['turdbot'] # Replace with your actual collection name
async def db(self, module, key=None, value=None):
document = await self.collection.find_one({"server_id": self.server_id})
if not document:
document = {
"server_id": self.server_id,
"modules": {}
}
modules = document.get("modules", {})
if module not in modules:
modules[module] = {}
if key is None:
return modules.get(module)
if value is not None:
self.serverdb.update_one({"module": module}, {"$set": {key: value}}, upsert=True)
return r
modules[module][key] = value
await self.collection.update_one(
{"server_id": self.server_id},
{"$set": {"modules": modules}},
upsert=True
)
return modules[module].get(key)

View File

@ -1,12 +1,9 @@
from os import environ as env
import discord
from discord.ext import bridge
import logging
from pymongo import MongoClient
from motor.motor_asyncio import AsyncIOMotorClient as MongoClient
from bin.storage import storage
logging.basicConfig(filename="turdbot.log",level=logging.INFO)
bot = bridge.Bot(
help_command=None,
command_prefix="!",
@ -16,22 +13,20 @@ bot = bridge.Bot(
name="you")
)
bot.load_extension("cogs.reply")
bot.load_extension("cogs.triggers")
bot.load_extension("cogs.counting")
bot.load_extension("cogs.settings")
uri = f"mongodb://{env['DB_USERNAME']}:{env['DB_PASSWORD']}@{env['DB_HOST']}/?authSource=admin"
bot.db = MongoClient(uri)["turdbot"]
bot.version = "4.0.0ALPHA"
@bot.event
async def on_ready():
print("Logged in as")
print(bot.user.name)
print(bot.user.id)
# logging.info(f"Logged in as {bot.user} (ID: {bot.user.id})")
# for guild in bot.guilds:
# logging.info(f"Added {guild.name} (ID: {guild.id})")
# storage(guild.id, bot.db).update_guild()
print("------")
bot.run(env["BOT_TOKEN"])

View File

@ -1,12 +0,0 @@
from discord.ext import bridge, commands
class Reply(commands.Cog):
def __init__(self, bot):
self.bot = bot
@bridge.bridge_command()
async def reply(self, ctx, args):
await ctx.respond(args)
def setup(bot):
bot.add_cog(Reply(bot))

14
cogs/misc.py Normal file
View File

@ -0,0 +1,14 @@
from discord.ext import bridge, commands
from bin.storage import storage
class Misc(commands.Cog):
def __init__(self, bot):
self.bot = bot
@bridge.bridge_command()
async def ping(self, ctx):
await ctx.send(f"pong! {round(self.bot.latency * 1000)}ms")
@bridge.bridge_command()
async def version(self, ctx):
await ctx.send(self.bot.version)

0
cogs/ping.py Normal file
View File

19
cogs/triggers.py Normal file
View File

@ -0,0 +1,19 @@
from discord.ext import bridge, commands
from bin.storage import storage
class Triggers(commands.Cog):
def __init__(self, bot):
self.bot = bot
@commands.Cog.listener()
async def on_message(self, message):
if message.author.bot:
return
db = storage(message.guild.id, self.bot.db).db
if db('triggers', 'enabled'):
for trigger in db('triggers', 'triggers'):
if trigger.lower() in message.content.lower():
await message.reply(db('triggers', 'response'))
def setup(bot):
bot.add_cog(Triggers(bot))

View File

@ -1,8 +0,0 @@
FROM python:3.12-slim
RUN mkdir -p /app
RUN mkdir -p /app/bin
COPY flask/. /app
COPY bin/storage.py /app/bin
WORKDIR /app
RUN pip install -r requirements.txt
ENTRYPOINT ["granian", "--port", "5005", "--interface", "wsgi", "app:app"]

View File

@ -1,19 +0,0 @@
from flask import Flask
from pymongo import MongoClient
from bin.storage import storage
from os import environ as env
import logging
logging.basicConfig(level=logging.INFO)
app = Flask(__name__)
uri = f"mongodb://{env['DB_USERNAME']}:{env['DB_PASSWORD']}@{env['DB_HOST']}/?authSource=admin"
app.db = MongoClient(uri)["turdbot"]
@app.route("/")
def hello():
db = storage(1004178748205187083,app.db).db
count = db('counting', 'count')
return f"Hello World! {count}"

View File

@ -1,3 +0,0 @@
granian
flask
pymongo

View File

@ -1,3 +1,4 @@
py-cord[audio]
pymongo
PyNaCl
PyNaCl
motor