From fc51736b34df3c37c06781ae948b18efb71616fa Mon Sep 17 00:00:00 2001 From: Ay355 <77558710+Ay-355@users.noreply.github.com> Date: Thu, 22 Jul 2021 07:02:42 -0700 Subject: [PATCH] Add a new view example for link buttons --- examples/views/link.py | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 examples/views/link.py diff --git a/examples/views/link.py b/examples/views/link.py new file mode 100644 index 000000000000..2516d53846d3 --- /dev/null +++ b/examples/views/link.py @@ -0,0 +1,39 @@ +from discord.ext import commands + +import discord +from urllib.parse import quote_plus + +class GoogleBot(commands.Bot): + def __init__(self): + super().__init__(command_prefix=commands.when_mentioned_or('$')) + + async def on_ready(self): + print(f'Logged in as {self.user} (ID: {self.user.id})') + print('------') + + +# Define a simple View that gives us a google link button. +# We take in `query` as the query that the command author requests for +class Google(discord.ui.View): + def __init__(self, query: str): + super().__init__() + # we need to quote the query string to make a valid url. Discord will raise an error if it isn't valid. + query = quote_plus(query) + url = f'https://www.google.com/search?q={query}' + + # Link buttons cannot be made with the decorator + # Therefore we have to manually create one. + # We add the quoted url to the button, and add the button to the view. + self.add_item(discord.ui.Button(label='Click Here', url=url)) + + +bot = GoogleBot() + + +@bot.command() +async def google(ctx: commands.Context, *, query: str): + """Returns a google link for a query""" + await ctx.send(f'Google Result for: `{query}`', view=Google(query)) + + +bot.run('token')