Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 17 additions & 2 deletions main.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
from src.feriadoES import feriadoESfun
from src.feriadoMX import feriadoMXfun
from src.feriadoUY import feriadoUYfun
from src.feriadoBO import feriadoBOfun
from src.birras import birrasfunc
from src.karma import karmagiversfunc, karmarankfunc, karmauserfunc
from src.help import helpfunc
Expand Down Expand Up @@ -53,6 +54,7 @@
from src.ctxcommands.ctxferiadomx import feriadomxfunctx
from src.ctxcommands.ctxferiadouy import feriadouyfunctx
from src.ctxcommands.ctxferiadoes import feriadoesfunctx
from src.ctxcommands.ctxferiadobo import feriadobofunctx
from src.ctxcommands.ctxbirras import birrasfunctx
from src.ctxcommands.ctxfulbo import fulbofunctx
from src.ctxcommands.ctxhelp import helpfunctx
Expand Down Expand Up @@ -314,7 +316,7 @@ async def on_command_error(ctx, error):
FechaActual = datetime.now()

mensajeayuda_general = """Informacion general sobre los comandos del bot de Sysarmy
!caucho !dolar !cripto !euro !pesos !fulbo !clima !subte !underground !feriadoar !feriadocl !feriadoes !feriadomx !feriadouy !q !qsearch !qadd !rank !kgivers !kgiven !karma !nerdearla !jobs !f1
!caucho !dolar !cripto !euro !pesos !fulbo !clima !subte !underground !feriadoar !feriadocl !feriadoes !feriadomx !feriadouy !feriadobo !q !qsearch !qadd !rank !kgivers !kgiven !karma !nerdearla !jobs !f1
Mas detalles en el canal #help-bot-commands de Discord, dentro de la seccion de Welcome! - o ejecutando /help desde Discord"""

# Custom error handling - si !help se manda vacio sin especificar comando, manda un mensaje de ayuda general
Expand Down Expand Up @@ -689,7 +691,11 @@ async def feriadouy(ctx):

@bot.command()
async def feriadomx(ctx):
await feriadomxfunctx(ctx)
await feriadomxfunctx(ctx)

@bot.command()
async def feriadobo(ctx):
await feriadobofunctx(ctx)

# COMANDO SUBTE
@bot.command()
Expand Down Expand Up @@ -924,6 +930,15 @@ async def feriadosmx(interaction: Interaction):
except:
print(f"Limite de API calls excedido. Ultimo call hecho por {interaction.user}")
await interaction.response.send_message("Comando /feriadoar: Limite de API calls excedido. Sori el CTO no nos dio budget.")

# COMANDO FERIADO BOLIVIA
@bot.tree.command(name="feriadobo", description="Proximos feriados en Bolivia")
async def feriadosbo(interaction: Interaction):
try:
await interaction.response.send_message(embed= await feriadoBOfun(interaction))
except:
print(f"Limite de API calls excedido. Ultimo call hecho por {interaction.user}")
await interaction.response.send_message("Comando /feriadoar: Limite de API calls excedido. Sori el CTO no nos dio budget.")

# COMANDO KARMA RANK
@bot.tree.command(name="karmarank", description="Ranking top 10 usuarios")
Expand Down
2 changes: 1 addition & 1 deletion readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ El comando help detalla instrucciones de uso para cada uno.

Comandos incluidos:

- De feriados --> !feriadomx !feriadoar !feriadouy !feriadocl !feriadoes
- De feriados --> !feriadomx !feriadoar !feriadouy !feriadocl !feriadoes !feriadobo
- Lifestyle --> !underground !subte !clima !fulbo !flip !shrug !f1
- Economia --> !caucho !cripto !dolar !euro !pesos
- Karma --> !rank !karma !kgiven !kgivers
Expand Down
58 changes: 58 additions & 0 deletions src/ctxcommands/ctxferiadobo.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
import requests
import discord
import datetime
import json
from ratelimit import limits

quince_minutos = 900

# Limitamos las API calls por las dudas. Esta libreria es medio negra. Lo dejamos asi por ahora, Mariano del futuro lo va a hacer manual
@limits(calls=15, period=quince_minutos)
async def feriadobofunctx(ctx):
today = datetime.date.today()
anio = datetime.date.today().year

# Llama a la API
response = requests.get(f"https://date.nager.at/api/v3/PublicHolidays/{anio}/BO")
try:
if response.status_code == 200:

# Carga el JSON en Python dictionaro
json_feriado = json.loads(response.text)
feriadosAR = response.json()
dicferiados = []

for dia in feriadosAR:
nombre = dia["localName"]
fecha_str = dia["date"]
fecha = datetime.datetime.strptime(fecha_str, '%Y-%m-%d').date() #Convierte fecha para poder chequearla con la fecha de hoy
feriado = {"nombre": nombre, "fecha": fecha}
dicferiados.append(feriado)

# Compara fecha de los feriados con la actual para devolver solo las fechas que se vienen
proximos_feriados = [feriado for feriado in dicferiados if feriado['fecha'] >= today]

# Log
FechaActual = datetime.datetime.now()
print(FechaActual)
print(f"Comando FeriadoBO ejecutado")

# Se crea el mensaje con los feriados
message = "Próximos feriados en Bolivia:\n"

for feriado in proximos_feriados[:3]:
message += f"{feriado['fecha']} - {feriado['nombre']}\n"

await ctx.send(message)

else:
print(f"Error: {response.status_code}. Pincho la API.")
print(f"Error en la API {response.status_code}")

# En caso de error en la API, se imprime el mensaje
await ctx.send('Error en la API. Por favor avisar a algun root')

except Exception as e:
print(f"Error en la API: {e}")


6 changes: 3 additions & 3 deletions src/ctxcommands/ctxhelp.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ async def helpfunctx(ctx, texto):
if texto is None:

mensajeayuda_general = """Informacion general sobre los comandos del bot de Sysarmy
!dolar !cripto !euro !fulbo !pesos !clima !subte !underground !feriadoar !feriadocl !feriadoes !feriadomx !feriadouy !q !qsearch !qadd !rank !kgivers !kgiven !karma !birras !flip !shrug !nerdearla !jobs !f1 !mundial
!dolar !cripto !euro !fulbo !pesos !clima !subte !underground !feriadoar !feriadocl !feriadoes !feriadomx !feriadouy !feriadobo !q !qsearch !qadd !rank !kgivers !kgiven !karma !birras !flip !shrug !nerdearla !jobs !f1 !mundial
Mas detalles en el canal #help-bot-commands de Discord, dentro de la seccion de Welcome! - o ejecutando /help desde Discord"""
await ctx.send(mensajeayuda_general)

Expand Down Expand Up @@ -41,8 +41,8 @@ async def helpfunctx(ctx, texto):
elif texto == "dolar":
await ctx.send("Pone !dolar y te da los precios de la timba. Opcionalmente se puede especifica el valor en pesos, Ej: '!dolar 500'")

elif texto in ["feriado", "feriadoar", "feriadomx", "feriadoes", "feriadocl", "feriadouy"]:
await ctx.send("Pone !feriadouy !feriadoar !feriadocl !feriadoes !feriadomx y te da los proximos feriados para el pais seleccionado. No requiere argumentos")
elif texto in ["feriado", "feriadoar", "feriadomx", "feriadoes", "feriadocl", "feriadouy", "feriadobo"]:
await ctx.send("Pone !feriadouy !feriadoar !feriadocl !feriadoes !feriadomx !feriadobo y te da los proximos feriados para el pais seleccionado. No requiere argumentos")

elif texto == "euro":
await ctx.send("Pone !euro y te da los precios de la timba. No requiere argumentos")
Expand Down
59 changes: 59 additions & 0 deletions src/feriadoBO.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
import requests
import discord
from discord import Embed
import datetime
import json
from ratelimit import limits

quince_minutos = 900

# Limitamos las API calls por las dudas. Esta libreria es medio negra. Lo dejamos asi por ahora, Mariano del futuro lo va a hacer manual
@limits(calls=15, period=quince_minutos)
async def feriadoBOfun(interaction):
today = datetime.date.today()
anio = datetime.date.today().year

# Llama a la API
response = requests.get(f"https://date.nager.at/api/v3/PublicHolidays/{anio}/BO")
try:
if response.status_code == 200:

# Carga el JSON en Python dictionaro
json_feriado = json.loads(response.text)
feriadosAR = response.json()
dicferiados = []

for dia in feriadosAR:
nombre = dia["localName"]
fecha_str = dia["date"]
fecha = datetime.datetime.strptime(fecha_str, '%Y-%m-%d').date() #Convierte fecha para poder chequearla con la fecha de hoy
feriado = {"nombre": nombre, "fecha": fecha}
dicferiados.append(feriado)

# Compara fecha de los feriados con la actual para devolver solo las fechas que se vienen
proximos_feriados = [feriado for feriado in dicferiados if feriado['fecha'] >= today]

# Log
FechaActual = datetime.datetime.now()
print(FechaActual)
print(f"Comando FeriadoBO ejecutado por {interaction.user}")

# Se crea el embed con los feriados
embed = Embed(title=f"Proximos feriados en Bolivia", description=f"A pedido de {interaction.user}", color = discord.Color.green())

for feriado in proximos_feriados[:3]:
embed.add_field(name =f"{feriado['fecha']}", value =f"{feriado['nombre']}", inline=False)
return embed
else:
print(f"Error: {response.status_code}. Pincho la API.")
print(f"Error en la API {response.status_code}")

# En caso de error en la API, se imprime el mensaje
embed = Embed(title=f"Error en la API", description=f"Se ha producido un error", color = discord.Color.green())
embed.add_field(name = "Error", value =f"Avisar a algun root",inline=True)
return embed

except Exception as e:
print(f"Error en la API: {e}")