129 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			129 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
#!/home/nonroot/event_scrapy/venv/bin/python3
 | 
						|
 | 
						|
import discord
 | 
						|
from datetime import datetime
 | 
						|
from discord.ext.tasks import loop
 | 
						|
from time import sleep
 | 
						|
from settings import get_connection_event, token
 | 
						|
 | 
						|
intents = discord.Intents.default()
 | 
						|
client = discord.Client(intents=intents)
 | 
						|
 | 
						|
@client.event
 | 
						|
async def on_message(message):
 | 
						|
    if message.author.bot:
 | 
						|
        return
 | 
						|
    if client.user.mentioned_in(message):
 | 
						|
        wanted_server = None
 | 
						|
        if "ze" in message.content.lower():
 | 
						|
            wanted_server = 27015
 | 
						|
        elif "mg" in message.content.lower():
 | 
						|
            wanted_server = 27017
 | 
						|
        elif "zr" in message.content.lower():
 | 
						|
            wanted_server = 27016
 | 
						|
        if wanted_server is None:
 | 
						|
            await message.channel.send("You did not specify a server. Either write ZE, MG or ZR.")
 | 
						|
            return
 | 
						|
        with get_connection_event() as conn:
 | 
						|
            with conn.cursor() as cur:
 | 
						|
                sql_statement = f"""
 | 
						|
                     select 
 | 
						|
                        event_title, event_server, event_maps, event_date, event_time, event_reward, event_url 
 | 
						|
                     from unloze_event.event where event_server like '%{wanted_server}%'
 | 
						|
                """
 | 
						|
                cur.execute(sql_statement)
 | 
						|
                res = cur.fetchall()
 | 
						|
        event_msg = ""
 | 
						|
        for res1 in res:
 | 
						|
            event_title = res1[0]
 | 
						|
            event_server = res1[1]
 | 
						|
            event_maps = res1[2]
 | 
						|
            event_date = res1[3]
 | 
						|
            event_time = res1[4]
 | 
						|
            event_reward = res1[5]
 | 
						|
            event_url = res1[6]
 | 
						|
            event_msg += f"Title: {event_title}\nServer: {event_server}\nMaps: {event_maps}\nDate: {event_date}\nTime: {event_time}\nRewards: {event_reward}\nURL: {event_url}\n\n"
 | 
						|
        await message.channel.send(event_msg)
 | 
						|
 | 
						|
@loop(seconds = 10)
 | 
						|
async def discord_task():
 | 
						|
    with get_connection_event() as conn:
 | 
						|
        with conn.cursor() as cur:
 | 
						|
            #only ze needs the cooldowns set
 | 
						|
            sql_statement = f"""
 | 
						|
                select event_maps, event_date
 | 
						|
                from unloze_event.event e 
 | 
						|
                where e.set_map_cooldown is null 
 | 
						|
                and e.event_server like '%27015%'
 | 
						|
            """
 | 
						|
            cur.execute(sql_statement)
 | 
						|
            res = cur.fetchone()
 | 
						|
            if res is not None:
 | 
						|
                event_maps = res[0].split(" ")
 | 
						|
                event_date = res[1].strip()
 | 
						|
                today_formatted = f"{datetime.now():%d-%m-%Y}".replace("-", "/")
 | 
						|
                today_hour = int(f"{datetime.now():%H}")
 | 
						|
                #print("today_formatted: ", today_formatted)
 | 
						|
                #print("event_date: ", event_date)
 | 
						|
                if today_formatted == event_date and today_hour > 10:
 | 
						|
                    sql_statement = f"""
 | 
						|
                        update unloze_event.event 
 | 
						|
                        set set_map_cooldown = true 
 | 
						|
                        where event_server like '%27015%'
 | 
						|
                    """
 | 
						|
                    cur.execute(sql_statement)
 | 
						|
                    for r in client.get_all_channels():
 | 
						|
                        if r.name == 'rcon-css-ze':
 | 
						|
                            print("event_maps: ", event_maps)
 | 
						|
                            for map in event_maps:
 | 
						|
                                #silly white space none sense 
 | 
						|
                                if len(map) > 3:
 | 
						|
                                    cooldown_msg = f"""sm_nominate_exclude_time {map} 1 0"""
 | 
						|
                                    #adding slight delay
 | 
						|
                                    sleep(1)
 | 
						|
                                    await r.send(cooldown_msg)
 | 
						|
                                    conn.commit()
 | 
						|
 | 
						|
    with get_connection_event() as conn:
 | 
						|
        with conn.cursor() as cur:
 | 
						|
            sql_statement = f"""
 | 
						|
              select 
 | 
						|
                     event_title, event_server, event_maps, event_date, event_time, event_reward, event_url 
 | 
						|
              from unloze_event.event where posted_event_on_discord is null
 | 
						|
            """
 | 
						|
            cur.execute(sql_statement)
 | 
						|
            res = cur.fetchall()
 | 
						|
            if res is not None:
 | 
						|
                for res1 in res:
 | 
						|
                    event_title = res1[0]
 | 
						|
                    event_server = res1[1]
 | 
						|
                    event_maps = res1[2]
 | 
						|
                    event_date = res1[3]
 | 
						|
                    event_time = res1[4]
 | 
						|
                    event_reward = res1[5]
 | 
						|
                    event_url = res1[6]
 | 
						|
 | 
						|
                    sql_statement = f"""
 | 
						|
                         update unloze_event.event 
 | 
						|
                         set posted_event_on_discord = 1 
 | 
						|
                         where event_title = %s
 | 
						|
                    """
 | 
						|
                    cur.execute(sql_statement, [event_title])
 | 
						|
                    try:
 | 
						|
                        event_msg = f"**- New Event Posted! -**\nTitle: {event_title}\nServer: {event_server}\nMaps: {event_maps}\nDate: {event_date}\nTime: {event_time}\nRewards: {event_reward}\nURL: {event_url}\n\n"
 | 
						|
                        for r in client.get_all_channels():
 | 
						|
                            if r.name == 'events':
 | 
						|
                                await r.send(event_msg)
 | 
						|
                                conn.commit()
 | 
						|
                    except Exception:
 | 
						|
                        import traceback
 | 
						|
                        error_msg = traceback.format_exc()
 | 
						|
                        print("traceback happened: ", error_msg)
 | 
						|
 | 
						|
def main():
 | 
						|
    discord_task.start()
 | 
						|
    client.run(token)
 | 
						|
 | 
						|
if __name__ == '__main__':
 | 
						|
    main()
 |