aboutsummaryrefslogtreecommitdiff
path: root/examples/views/counter.py
diff options
context:
space:
mode:
Diffstat (limited to 'examples/views/counter.py')
-rw-r--r--examples/views/counter.py43
1 files changed, 43 insertions, 0 deletions
diff --git a/examples/views/counter.py b/examples/views/counter.py
new file mode 100644
index 00000000..a1ab756a
--- /dev/null
+++ b/examples/views/counter.py
@@ -0,0 +1,43 @@
+from discord.ext import commands
+
+import discord
+
+
+class CounterBot(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 counter button
+class Counter(discord.ui.View):
+
+ # Define the actual button
+ # When pressed, this increments the number displayed until it hits 5.
+ # When it hits 5, the counter button is disabled and it turns green.
+ # note: The name of the function does not matter to the library
+ @discord.ui.button(label='0', style=discord.ButtonStyle.red)
+ async def count(self, button: discord.ui.Button, interaction: discord.Interaction):
+ number = int(button.label) if button.label else 0
+ if number + 1 >= 5:
+ button.style = discord.ButtonStyle.green
+ button.disabled = True
+ button.label = str(number + 1)
+
+ # Make sure to update the message with our updated selves
+ await interaction.response.edit_message(view=self)
+
+
+bot = CounterBot()
+
+
+async def counter(ctx: commands.Context):
+ """Starts a counter for pressing."""
+ await ctx.send('Press!', view=Counter())
+
+
+bot.run('token')