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()
 |