mirror of https://github.com/stijndcl/didier
				
				
				
			Add slash command, support multiple restos & add date to embed
							parent
							
								
									aae5616488
								
							
						
					
					
						commit
						73cc6aa0e9
					
				| 
						 | 
					@ -1,4 +1,5 @@
 | 
				
			||||||
from data import schedule
 | 
					from data import schedule
 | 
				
			||||||
 | 
					from data.embeds.food import Menu
 | 
				
			||||||
from decorators import help
 | 
					from decorators import help
 | 
				
			||||||
import discord
 | 
					import discord
 | 
				
			||||||
from discord.ext import commands
 | 
					from discord.ext import commands
 | 
				
			||||||
| 
						 | 
					@ -21,27 +22,7 @@ class School(commands.Cog):
 | 
				
			||||||
    # @commands.check(checks.allowedChannels)
 | 
					    # @commands.check(checks.allowedChannels)
 | 
				
			||||||
    @help.Category(category=Category.School)
 | 
					    @help.Category(category=Category.School)
 | 
				
			||||||
    async def eten(self, ctx, day: str = None):
 | 
					    async def eten(self, ctx, day: str = None):
 | 
				
			||||||
        day_dt = les.find_target_date(day if day else None)
 | 
					        embed = Menu(day).to_embed()
 | 
				
			||||||
        day_dt = skip_weekends(day_dt)
 | 
					 | 
				
			||||||
        day = intToWeekday(day_dt.weekday())
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        # Create embed
 | 
					 | 
				
			||||||
        menu = eten.etenScript(day_dt)
 | 
					 | 
				
			||||||
        embed = discord.Embed(colour=discord.Colour.blue())
 | 
					 | 
				
			||||||
        embed.set_author(name="Menu voor {}".format(day.lower()))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if "gesloten" in menu[0].lower():
 | 
					 | 
				
			||||||
            embed.description = "Restaurant gesloten"
 | 
					 | 
				
			||||||
        else:
 | 
					 | 
				
			||||||
            embed.add_field(name="🥣 Soep:", value=menu[0], inline=False)
 | 
					 | 
				
			||||||
            embed.add_field(name="🍴 Hoofdgerechten:", value=menu[1], inline=False)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            if menu[2]:
 | 
					 | 
				
			||||||
                embed.add_field(name="❄️ Koud:", value=menu[2], inline=False)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            if menu[3]:
 | 
					 | 
				
			||||||
                embed.add_field(name="🥦 Groenten:", value=menu[3], inline=False)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        await ctx.reply(embed=embed, mention_author=False)
 | 
					        await ctx.reply(embed=embed, mention_author=False)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @commands.command(name="Les", aliases=["Class", "Classes", "Sched", "Schedule"], usage="[Dag]*")
 | 
					    @commands.command(name="Les", aliases=["Class", "Classes", "Sched", "Schedule"], usage="[Dag]*")
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,37 @@
 | 
				
			||||||
 | 
					from discord.ext import commands
 | 
				
			||||||
 | 
					from dislash import SlashInteraction, slash_command, Option, OptionType, OptionChoice
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from data.embeds.food import Menu, restos
 | 
				
			||||||
 | 
					from startup.didier import Didier
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class SchoolSlash(commands.Cog):
 | 
				
			||||||
 | 
					    def __init__(self, client: Didier):
 | 
				
			||||||
 | 
					        self.client: Didier = client
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @slash_command(
 | 
				
			||||||
 | 
					        name="eten",
 | 
				
			||||||
 | 
					        description="Menu voor een bepaalde resto op een bepaalde dag",
 | 
				
			||||||
 | 
					        options=[
 | 
				
			||||||
 | 
					            Option(
 | 
				
			||||||
 | 
					                "dag",
 | 
				
			||||||
 | 
					                description="Dag",
 | 
				
			||||||
 | 
					                type=OptionType.STRING
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					            Option(
 | 
				
			||||||
 | 
					                "resto",
 | 
				
			||||||
 | 
					                description="Resto",
 | 
				
			||||||
 | 
					                type=OptionType.STRING,
 | 
				
			||||||
 | 
					                choices=list(
 | 
				
			||||||
 | 
					                    OptionChoice(v, k) for k, v in restos.items()
 | 
				
			||||||
 | 
					                )
 | 
				
			||||||
 | 
					            )
 | 
				
			||||||
 | 
					        ]
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					    async def _food_slash(self, interaction: SlashInteraction, dag: str = None, resto: str = "sterre"):
 | 
				
			||||||
 | 
					        embed = Menu(dag, resto).to_embed()
 | 
				
			||||||
 | 
					        await interaction.reply(embed=embed)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def setup(client: Didier):
 | 
				
			||||||
 | 
					    client.add_cog(SchoolSlash(client))
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,55 @@
 | 
				
			||||||
 | 
					from dataclasses import dataclass, field
 | 
				
			||||||
 | 
					from datetime import datetime
 | 
				
			||||||
 | 
					from typing import Optional, Tuple, Dict
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import discord
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from functions import les, eten
 | 
				
			||||||
 | 
					from functions.timeFormatters import skip_weekends, intToWeekday
 | 
				
			||||||
 | 
					from functions.stringFormatters import leading_zero as lz
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					restos: Dict[str, str] = {
 | 
				
			||||||
 | 
					    "ardoyen": "Ardoyen",
 | 
				
			||||||
 | 
					    "coupure": "Coupure",
 | 
				
			||||||
 | 
					    "debrug": "De Brug",
 | 
				
			||||||
 | 
					    "dunant": "Dunant",
 | 
				
			||||||
 | 
					    "heymans": "Heymans",
 | 
				
			||||||
 | 
					    "kantienberg": "Kantienberg",
 | 
				
			||||||
 | 
					    "merelbeke": "Merelbeke",
 | 
				
			||||||
 | 
					    "sterre": "Sterre"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@dataclass
 | 
				
			||||||
 | 
					class Menu:
 | 
				
			||||||
 | 
					    day: Optional[str] = None
 | 
				
			||||||
 | 
					    resto: str = "sterre"
 | 
				
			||||||
 | 
					    _day: datetime = field(init=False)
 | 
				
			||||||
 | 
					    _menu: Tuple[str, str, str, str] = field(init=False)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def __post_init__(self):
 | 
				
			||||||
 | 
					        self._day = les.find_target_date(self.day if self.day else None)
 | 
				
			||||||
 | 
					        self._day = skip_weekends(self._day)
 | 
				
			||||||
 | 
					        self.day = intToWeekday(self._day.weekday())
 | 
				
			||||||
 | 
					        self._menu = eten.etenScript(self._day)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def to_embed(self) -> discord.Embed:
 | 
				
			||||||
 | 
					        embed = discord.Embed(colour=discord.Colour.blue())
 | 
				
			||||||
 | 
					        date_formatted = f"{lz(self._day.day)}/{lz(self._day.month)}/{self._day.year}"
 | 
				
			||||||
 | 
					        embed.set_author(name=f"Menu voor {self.day.lower()} {date_formatted}")
 | 
				
			||||||
 | 
					        embed.title = f"Resto {restos[self.resto]}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if "gesloten" in self._menu[0].lower():
 | 
				
			||||||
 | 
					            embed.description = "Restaurant gesloten"
 | 
				
			||||||
 | 
					        else:
 | 
				
			||||||
 | 
					            embed.add_field(name="🥣 Soep:", value=self._menu[0], inline=False)
 | 
				
			||||||
 | 
					            embed.add_field(name="🍴 Hoofdgerechten:", value=self._menu[1], inline=False)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if self._menu[2]:
 | 
				
			||||||
 | 
					                embed.add_field(name="❄️ Koud:", value=self._menu[2], inline=False)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if self._menu[3]:
 | 
				
			||||||
 | 
					                embed.add_field(name="🥦 Groenten:", value=self._menu[3], inline=False)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return embed
 | 
				
			||||||
| 
						 | 
					@ -49,7 +49,7 @@ def etenScript(dag: datetime, resto: str = "sterre"):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        for v in menu["vegetables"]:
 | 
					        for v in menu["vegetables"]:
 | 
				
			||||||
            menuGroenten += ("* {}\n".format(v))
 | 
					            menuGroenten += ("* {}\n".format(v))
 | 
				
			||||||
    except Exception as e:
 | 
					    except Exception:
 | 
				
			||||||
        menuSoep += "Restaurant gesloten"
 | 
					        menuSoep += "Restaurant gesloten"
 | 
				
			||||||
        menuGroenten += "Restaurant gesloten"
 | 
					        menuGroenten += "Restaurant gesloten"
 | 
				
			||||||
        menuHoofdgerechten += "Restaurant gesloten"
 | 
					        menuHoofdgerechten += "Restaurant gesloten"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue