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
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}")
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue