forked from Rapptz/discord.py
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add a new view example for link buttons
- Loading branch information
Showing
1 changed file
with
39 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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') |