diff --git a/main.py b/main.py old mode 100644 new mode 100755 index 0c0de8c..5e90fd5 --- a/main.py +++ b/main.py @@ -1,100 +1,100 @@ -import requests -import discord -from discord.ext import commands -from discord.ext import tasks -import secrets -import time -import xmltodict - -intents = discord.Intents.all() -allowed_mentions = discord.AllowedMentions(everyone = True) - -bot = commands.Bot(command_prefix="$", intents=intents, allowed_mentions=allowed_mentions) - -url = "https://www.infodefensa.com/sitemap/lastarticles" -r = requests.get(url) -xml = xmltodict.parse(r.text) -ultimaurl = xml['urlset']['url'][0]['loc'] #Guarda la última url del xml -#viejoxml = xml['urlset']['url'][0]['loc'] #Guarda la primera url del xml al encender el bot - - -@bot.event -async def on_ready(): - print(f"Bot vivo! \nUsuario: {bot.user}") - await bot.user.edit(username="Pregonero") - await bot.change_presence( - status=discord.Status.online, - activity=discord.Activity( - type=discord.ActivityType.playing, - name="Pregoneando")) - await send_log(f"hora de inicio: {time.ctime(time.time())}") - mandar_noticia.start() - - -async def send_log(msg): #Mandar log - channel = bot.get_channel(secrets.IDcanalLogs) #Canal al que se envía el log - await channel.send(msg) - - -@tasks.loop(minutes = 5) #Mandar noticias -async def mandar_noticia(): - global ultimaurl - - try: - channel = bot.get_channel(secrets.IDcanalNoticias) #Canal al que se envía el mensaje - - r = requests.get(url) - xml = xmltodict.parse(r.text) - urls = [u['loc'] for u in xml['urlset']['url']] #Lista de todas las URL - - nuevas = [] - for loc in urls: - if loc == ultimaurl: - break - nuevas.append(loc) - - if nuevas: #Si el array no está vacío - await channel.send(f"Atención <@&{secrets.IDrol}> hay nuevas noticias:") #Luego hay que cambiar el rol - for loc in reversed(nuevas): #Recorre el array hacia atrás para mandarlas en orden. - await channel.send(f"\n{loc}") - ultimaurl = urls[0] #Actualizamos la url vieja - except Exception as e: - await send_log(f"Error: ```{e}```") - - -@bot.command() -async def noticias(ctx): - rol = ctx.guild.get_role(secrets.IDrol) - user = ctx.author - - if rol in user.roles: - await user.remove_roles(rol) - await ctx.send(f"Entendido {user.mention}, ya no recibirás las noticias", delete_after=5) - else: - await user.add_roles(rol) - await ctx.send(f"Entendido {user.mention}, ahora recibirás las noticias", delete_after=5) - - - - - -#Versión antígua, sólo comprobaba la última URL y pierde info si se suben varias a la vez -#@tasks.loop(minutes = 5) #Mandar noticias -#async def mandar_noticia(): -# global viejoxml - -# try: -# channel = bot.get_channel(secrets.IDcanalNoticias) #Canal al que se envía el mensaje - -# r = requests.get(url) -# xml = xmltodict.parse(r.text) -# nuevoxml = xml['urlset']['url'][0]['loc'] #Guarda la primera url del xml -# if nuevoxml != viejoxml: #Compara las url -# await channel.send(f"Atención <@&{secrets.IDrol}> hay una nueva noticia:\n{xml['urlset']['url'][0]['loc']}") #Luego hay que cambiar el rol -# viejoxml = nuevoxml #Actualizamos la url vieja -# except Exception as e: -# await send_log(f"Error: ```{e}```") - - -if __name__ == '__main__': - bot.run(secrets.TOKEN) \ No newline at end of file +import requests +import discord +from discord.ext import commands +from discord.ext import tasks +import os +import time +import xmltodict + +intents = discord.Intents.all() +allowed_mentions = discord.AllowedMentions(everyone = True) + +bot = commands.Bot(command_prefix="$", intents=intents, allowed_mentions=allowed_mentions) + +url = "https://www.infodefensa.com/sitemap/lastarticles" +r = requests.get(url) +xml = xmltodict.parse(r.text) +ultimaurl = xml['urlset']['url'][0]['loc'] #Guarda la última url del xml +#viejoxml = xml['urlset']['url'][0]['loc'] #Guarda la primera url del xml al encender el bot + + +@bot.event +async def on_ready(): + print(f"Bot vivo! \nUsuario: {bot.user}") + await bot.user.edit(username="Pregonero") + await bot.change_presence( + status=discord.Status.online, + activity=discord.Activity( + type=discord.ActivityType.playing, + name="Pregoneando")) + await send_log(f"hora de inicio: {time.ctime(time.time())}") + mandar_noticia.start() + + +async def send_log(msg): #Mandar log + channel = bot.get_channel(int(os.environ["IDcanalLogs"])) #Canal al que se envía el log + await channel.send(msg) + + +@tasks.loop(minutes = 5) #Mandar noticias +async def mandar_noticia(): + global ultimaurl + + try: + channel = bot.get_channel(int(os.environ["IDcanalNoticias"])) #Canal al que se envía el mensaje + + r = requests.get(url) + xml = xmltodict.parse(r.text) + urls = [u['loc'] for u in xml['urlset']['url']] #Lista de todas las URL + + nuevas = [] + for loc in urls: + if loc == ultimaurl: + break + nuevas.append(loc) + + if nuevas: #Si el array no está vacío + await channel.send(f"Atención <@&{int(os.environ['IDRol'])}> hay nuevas noticias:") #Luego hay que cambiar el rol + for loc in reversed(nuevas): #Recorre el array hacia atrás para mandarlas en orden. + await channel.send(f"\n{loc}") + ultimaurl = urls[0] #Actualizamos la url vieja + except Exception as e: + await send_log(f"Error: ```{e}```") + + +@bot.command() +async def noticias(ctx): + rol = ctx.guild.get_role(int(os.environ["IDRol"])) + user = ctx.author + + if rol in user.roles: + await user.remove_roles(rol) + await ctx.send(f"Entendido {user.mention}, ya no recibirás las noticias", delete_after=5) + else: + await user.add_roles(rol) + await ctx.send(f"Entendido {user.mention}, ahora recibirás las noticias", delete_after=5) + + + + + +#Versión antígua, sólo comprobaba la última URL y pierde info si se suben varias a la vez +#@tasks.loop(minutes = 5) #Mandar noticias +#async def mandar_noticia(): +# global viejoxml + +# try: +# channel = bot.get_channel(secrets.IDcanalNoticias) #Canal al que se envía el mensaje + +# r = requests.get(url) +# xml = xmltodict.parse(r.text) +# nuevoxml = xml['urlset']['url'][0]['loc'] #Guarda la primera url del xml +# if nuevoxml != viejoxml: #Compara las url +# await channel.send(f"Atención <@&{secrets.IDrol}> hay una nueva noticia:\n{xml['urlset']['url'][0]['loc']}") #Luego hay que cambiar el rol +# viejoxml = nuevoxml #Actualizamos la url vieja +# except Exception as e: +# await send_log(f"Error: ```{e}```") + + +if __name__ == '__main__': + bot.run(os.environ["TOKEN"])