feat(monitoring): add http server for monitoring
This commit is contained in:
parent
97980e96d1
commit
c442fd55fe
4 changed files with 76 additions and 10 deletions
17
bot.py
17
bot.py
|
@ -30,6 +30,7 @@ l_extensions: List[str] = [
|
|||
'cogs.poll',
|
||||
'cogs.help',
|
||||
'jishaku',
|
||||
'cogs.monitoring'
|
||||
]
|
||||
|
||||
|
||||
|
@ -73,20 +74,21 @@ class TuxBot(commands.AutoShardedBot):
|
|||
|
||||
for extension in l_extensions:
|
||||
try:
|
||||
self.load_extension(extension)
|
||||
print(Texts().get("Extension loaded successfully : ")
|
||||
+ extension)
|
||||
log.info(Texts().get("Extension loaded successfully : ")
|
||||
+ extension)
|
||||
self.load_extension(extension)
|
||||
except Exception as e:
|
||||
print(Texts().get("Failed to load extension : ")
|
||||
+ extension, file=sys.stderr)
|
||||
print(e)
|
||||
log.error(Texts().get("Failed to load extension : ")
|
||||
+ extension, exc_info=e)
|
||||
|
||||
async def is_owner(self, user: discord.User) -> bool:
|
||||
return str(user.id) in self.config.get("permissions", "owners").split(
|
||||
',')
|
||||
', ')
|
||||
|
||||
async def on_socket_response(self, msg):
|
||||
self._prev_events.append(msg)
|
||||
|
@ -113,10 +115,10 @@ class TuxBot(commands.AutoShardedBot):
|
|||
await self.invoke(ctx)
|
||||
|
||||
async def on_message(self, message: discord.message):
|
||||
if message.author.bot \
|
||||
or message.author.id in self.blacklist \
|
||||
or (message.guild is not None
|
||||
and message.guild.id in self.blacklist):
|
||||
if message.author.id in self.blacklist or (message.guild is not None and message.guild.id in self.blacklist):
|
||||
return
|
||||
|
||||
if message.author.bot and message.author.id != int(self.config.get('bot', 'Tester')):
|
||||
return
|
||||
|
||||
await self.process_commands(message)
|
||||
|
@ -147,7 +149,7 @@ class TuxBot(commands.AutoShardedBot):
|
|||
logs_webhook = self.config["webhook"]
|
||||
webhook = discord.Webhook.partial(
|
||||
id=logs_webhook.get('ID'),
|
||||
token=logs_webhook.get('Url'),
|
||||
token=logs_webhook.get('Token'),
|
||||
adapter=discord.AsyncWebhookAdapter(
|
||||
self.session
|
||||
)
|
||||
|
@ -195,6 +197,7 @@ if __name__ == "__main__":
|
|||
print(Texts().get('Starting...'))
|
||||
|
||||
bot = TuxBot(Database(Config("./configs/config.cfg")))
|
||||
|
||||
try:
|
||||
with setup_logging():
|
||||
bot.run()
|
||||
|
|
40
cogs/monitoring.py
Normal file
40
cogs/monitoring.py
Normal file
|
@ -0,0 +1,40 @@
|
|||
import asyncio
|
||||
import threading
|
||||
from aiohttp import web
|
||||
|
||||
from discord.ext import commands
|
||||
from bot import TuxBot
|
||||
|
||||
|
||||
class Monitoring(commands.Cog):
|
||||
|
||||
def __init__(self):
|
||||
self.app = web.Application()
|
||||
|
||||
t = threading.Thread(
|
||||
target=self.run_server,
|
||||
args=(self.aiohttp_server(),)
|
||||
)
|
||||
t.start()
|
||||
|
||||
def aiohttp_server(self):
|
||||
async def hi(request):
|
||||
return web.Response(text="I'm alive !")
|
||||
|
||||
self.app.add_routes([web.get('/', hi)])
|
||||
runner = web.AppRunner(self.app)
|
||||
|
||||
return runner
|
||||
|
||||
@staticmethod
|
||||
def run_server(runner):
|
||||
loop = asyncio.new_event_loop()
|
||||
asyncio.set_event_loop(loop)
|
||||
loop.run_until_complete(runner.setup())
|
||||
site = web.TCPSite(runner, '0.0.0.', 3389)
|
||||
loop.run_until_complete(site.start())
|
||||
loop.run_forever()
|
||||
|
||||
|
||||
def setup(bot: TuxBot):
|
||||
bot.add_cog(Monitoring())
|
22
cogs/poll.py
22
cogs/poll.py
|
@ -72,6 +72,26 @@ class Polls(commands.Cog):
|
|||
|
||||
await self.update_poll(poll.id)
|
||||
|
||||
@commands.Cog.listener()
|
||||
async def on_raw_reaction_remove(self, pld: discord.RawReactionActionEvent):
|
||||
poll = self.get_poll(pld)
|
||||
|
||||
if poll:
|
||||
choice = utils_emotes.get_index(pld.emoji.name)
|
||||
|
||||
responses = self.bot.database.session.query(Responses) \
|
||||
.filter(
|
||||
Responses.poll_id == poll.id,
|
||||
Responses.user == pld.user_id,
|
||||
Responses.choice == choice
|
||||
)
|
||||
|
||||
if responses.count() != 0:
|
||||
response = responses.first()
|
||||
self.bot.database.session.delete(response)
|
||||
self.bot.database.session.commit()
|
||||
await self.update_poll(poll.id)
|
||||
|
||||
###########################################################################
|
||||
|
||||
async def create_poll(self, ctx: commands.Context, poll: str, anonymous):
|
||||
|
@ -92,7 +112,7 @@ class Polls(commands.Cog):
|
|||
)
|
||||
for i, response in enumerate(responses):
|
||||
e.add_field(
|
||||
name=f"__```{emotes[i]} - {response.capitalize()}```__",
|
||||
name=f"__{emotes[i]}` - {response.capitalize()}`__",
|
||||
value="**0** vote"
|
||||
)
|
||||
e.set_footer(text=f"ID: #{poll_row.id}")
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
[280805240977227776]
|
||||
prefixes = b1.|Imo07fZY9ogan7ank1n3UERg|b2.
|
||||
prefixes = test.
|
||||
|
||||
[303633056944881686]
|
||||
prefixes = b1.
|
||||
|
@ -8,5 +8,8 @@ prefixes = b1.
|
|||
prefixes = b1.
|
||||
|
||||
[336642139381301249]
|
||||
prefixes =
|
||||
prefixes = ba.
|
||||
|
||||
[274247231534792704]
|
||||
prefixes = test.
|
||||
|
||||
|
|
Loading…
Reference in a new issue