62 lines
1.9 KiB
Python
62 lines
1.9 KiB
Python
"""
|
|
This module is the automated poster to discord.
|
|
This module will post to the discord whenever the script is run, detailing the callouts for the current raid for the next seven days.
|
|
This automation will be run on a daily basis, through a cron job + docker.
|
|
|
|
@author: Gabriella 'contrastellar' Agathon
|
|
"""
|
|
import argparse
|
|
import discord
|
|
import helper.db_helper
|
|
|
|
|
|
DATABASE_CONN = None
|
|
|
|
intents = discord.Intents.default()
|
|
intents.message_content = True
|
|
intents.guild_messages = True
|
|
intents.presences = False
|
|
|
|
client = discord.Client(intents=intents)
|
|
|
|
NUMBER_OF_DAYS = 7
|
|
|
|
parser: argparse.ArgumentParser = argparse.ArgumentParser(prog='callouts aux',
|
|
description='The poster for the callouts bot functionality')
|
|
|
|
parser.add_argument('database')
|
|
parser.add_argument('token')
|
|
parser.add_argument('guild_id', type=int)
|
|
parser.add_argument('channel_id', type=int)
|
|
|
|
args: argparse.Namespace = parser.parse_args()
|
|
|
|
@client.event
|
|
async def on_ready():
|
|
|
|
print(f'{client.user} has connected.')
|
|
print(args.guild_id)
|
|
|
|
guild: discord.Guild = client.get_guild(args.guild_id)
|
|
channel: discord.TextChannel = guild.get_channel(args.channel_id)
|
|
|
|
callouts = DATABASE_CONN.query_callouts(NUMBER_OF_DAYS)
|
|
formatted_callouts = DATABASE_CONN.formatted_list_of_callouts(callouts)
|
|
output = f'Callouts for the next {NUMBER_OF_DAYS} days:\n' + formatted_callouts
|
|
output += '\n\n'
|
|
|
|
output += f'Breaks for the next {NUMBER_OF_DAYS} days:\n'
|
|
|
|
breaks: str = DATABASE_CONN.query_breaks(NUMBER_OF_DAYS)
|
|
formatted_breaks: str = DATABASE_CONN.formatted_list_of_breaks(breaks)
|
|
|
|
output += formatted_breaks
|
|
|
|
await channel.send(output)
|
|
await client.close() # Another way to exit, a little bit cleaner than exit(0)
|
|
return
|
|
|
|
DATABASE_CONN = helper.db_helper.DBHelper(args.database)
|
|
TOKEN = open(args.token, encoding='utf-8').read()
|
|
client.run(TOKEN)
|