mirror of https://github.com/stijndcl/didier
				
				
				
			Create a slash command for google search
							parent
							
								
									eb6fc6513c
								
							
						
					
					
						commit
						537111d357
					
				|  | @ -1,10 +1,37 @@ | |||
| import discord | ||||
| from discord.ext import commands | ||||
| from dislash import slash_command, SlashInteraction, Option, OptionType | ||||
| from decorators import help | ||||
| from enums.help_categories import Category | ||||
| from functions.scrapers.google import google_search | ||||
| 
 | ||||
| 
 | ||||
| def _create_google_embed(results) -> discord.Embed: | ||||
|     # Filter out all Nones | ||||
|     elements = list(filter(lambda x: x is not None, results)) | ||||
| 
 | ||||
|     embed = discord.Embed(colour=discord.Colour.blue()) | ||||
|     embed.set_author(name="Google Search") | ||||
| 
 | ||||
|     # Empty list of results | ||||
|     if len(elements) == 0: | ||||
|         embed.description = "Geen resultaten gevonden." | ||||
|         return embed | ||||
| 
 | ||||
|     # Cut excess results out | ||||
|     if len(elements) > 10: | ||||
|         elements = elements[:10] | ||||
| 
 | ||||
|     links = [] | ||||
| 
 | ||||
|     for index, (link, title) in enumerate(elements): | ||||
|         links.append("{}: [{}]({})".format(index + 1, title, link)) | ||||
| 
 | ||||
|     embed.description = "\n".join(links) | ||||
| 
 | ||||
|     return embed | ||||
| 
 | ||||
| 
 | ||||
| class Google(commands.Cog): | ||||
|     def __init__(self, client): | ||||
|         self.client = client | ||||
|  | @ -13,6 +40,26 @@ class Google(commands.Cog): | |||
|     def cog_check(self, ctx): | ||||
|         return not self.client.locked | ||||
| 
 | ||||
|     @slash_command(name="google", | ||||
|                    description="Google search", | ||||
|                    options=[ | ||||
|                      Option("query", "Search query", OptionType.STRING, required=True) | ||||
|                    ], | ||||
|                    guild_ids=[880175869841277008] | ||||
|                    ) | ||||
|     async def _google_slash(self, interaction: SlashInteraction, query: str): | ||||
|         results, status = google_search(query) | ||||
| 
 | ||||
|         if results is None: | ||||
|             return await interaction.reply("Er ging iets fout (Response {})".format(status)) | ||||
| 
 | ||||
|         embed = _create_google_embed(results) | ||||
|         await interaction.reply(embed=embed) | ||||
| 
 | ||||
|     @slash_command(name="test", description="Test") | ||||
|     async def test(self, interaction): | ||||
|         await interaction.reply(":eyes:") | ||||
| 
 | ||||
|     @commands.command(name="Google", aliases=["Gtfm", "Search"], usage="[Query]", case_insensitive=True) | ||||
|     @help.Category(Category.Other) | ||||
|     async def google(self, ctx, *query): | ||||
|  | @ -24,28 +71,7 @@ class Google(commands.Cog): | |||
|         if results is None: | ||||
|             return await ctx.send("Er ging iets fout (Response {})".format(status)) | ||||
| 
 | ||||
|         # Filter out all Nones | ||||
|         elements = list(filter(lambda x: x is not None, results)) | ||||
| 
 | ||||
|         embed = discord.Embed(colour=discord.Colour.blue()) | ||||
|         embed.set_author(name="Google Search") | ||||
| 
 | ||||
|         # Empty list of results | ||||
|         if len(elements) == 0: | ||||
|             embed.description = "Geen resultaten gevonden." | ||||
|             return await ctx.reply(embed=embed, mention_author=False) | ||||
| 
 | ||||
|         # Cut excess results out | ||||
|         if len(elements) > 10: | ||||
|             elements = elements[:10] | ||||
| 
 | ||||
|         links = [] | ||||
| 
 | ||||
|         for index, (link, title) in enumerate(elements): | ||||
|             links.append("{}: [{}]({})".format(index + 1, title, link)) | ||||
| 
 | ||||
|         embed.description = "\n".join(links) | ||||
| 
 | ||||
|         embed = _create_google_embed(results) | ||||
|         await ctx.reply(embed=embed, mention_author=False) | ||||
| 
 | ||||
| 
 | ||||
|  |  | |||
|  | @ -62,7 +62,7 @@ class School(commands.Cog): | |||
|         return await ctx.send(embed=s.create_schedule().to_embed()) | ||||
| 
 | ||||
|     @commands.command(name="Pin", usage="[Message]") | ||||
|     @help.Category(category=Category.School) | ||||
|     @help.Category(category=Category.Other) | ||||
|     async def pin(self, ctx, message: discord.Message): | ||||
|         # In case people abuse, check if they're blacklisted | ||||
|         blacklist = [] | ||||
|  |  | |||
|  | @ -1,11 +1,8 @@ | |||
| #!/usr/bin/env python3 | ||||
| 
 | ||||
| import datetime | ||||
| import requests | ||||
| import sys | ||||
| 
 | ||||
| 
 | ||||
| def etenScript(weekDag): | ||||
| def etenScript(weekDag, resto: str = "sterre"): | ||||
|     # What day | ||||
|     weekdagen = ('ma', 'di', 'wo', 'do', 'vr', 'za', 'zo') | ||||
|     deltas = {'morgen': 1, | ||||
|  | @ -26,7 +23,7 @@ def etenScript(weekDag): | |||
| 
 | ||||
|     # Fetch from API | ||||
|     try: | ||||
|         menu = requests.get(f"https://zeus.ugent.be/hydra/api/2.0/resto/menu/nl-sterre/{d.year}/{d.month}/{d.day}.json").json() | ||||
|         menu = requests.get(f"https://zeus.ugent.be/hydra/api/2.0/resto/menu/nl-{resto}/{d.year}/{d.month}/{d.day}.json").json() | ||||
| 
 | ||||
|         if not menu["meals"]: | ||||
|             raise Exception() | ||||
|  |  | |||
|  | @ -18,4 +18,7 @@ Quart-CORS==0.5.0 | |||
| attrs~=21.2.0 | ||||
| dacite~=1.6.0 | ||||
| pytest==6.2.4 | ||||
| markdownify==0.9.2 | ||||
| markdownify==0.9.2 | ||||
| 
 | ||||
| # Experimental package for slash commands & menus | ||||
| dislash.py==1.4.9 | ||||
|  | @ -1,5 +1,6 @@ | |||
| from data.snipe import Snipe | ||||
| from discord.ext import commands, ipc | ||||
| from dislash import InteractionClient | ||||
| import os | ||||
| from settings import HOST_IPC | ||||
| from startup.init_files import check_all | ||||
|  | @ -10,6 +11,8 @@ class Didier(commands.Bot): | |||
|     """ | ||||
|     Main Bot class for Didier | ||||
|     """ | ||||
|     # Reference to interactions client | ||||
|     interactions: InteractionClient | ||||
| 
 | ||||
|     # Dict to store the most recent Snipe info per channel | ||||
|     snipe: Dict[int, Snipe] = {} | ||||
|  | @ -29,6 +32,9 @@ class Didier(commands.Bot): | |||
|         # Remove default help command | ||||
|         self.remove_command("help") | ||||
| 
 | ||||
|         # Create interactions client | ||||
|         self.interactions = InteractionClient(self, test_guilds=[728361030404538488, 880175869841277008]) | ||||
| 
 | ||||
|         # Load all extensions | ||||
|         self.init_extensions() | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue