#discord-bots

1 messages · Page 959 of 1

junior verge
#

But that didn't work

tough lance
#

What didn't work

junior verge
#

@tough lance

tough lance
#

Bro change to ctx.interaction.original_message 🤦‍♂️

hushed galleon
#

this is what they said

junior verge
#

Sorry, I did not see interaction.

#

My bad

#

Why does this happen when it doesn't give any error?

quaint epoch
#

for that command

junior verge
#

Uh not sure, how do I do that?

slate swan
junior verge
#

I heard that word so much I still don't get what it means.

slate swan
junior verge
#

Where should that be?

slate swan
junior verge
#

And I randomly got this

quaint epoch
junior verge
quaint epoch
#

so yeah it's good to defer

slate swan
quaint epoch
#

huh, back to the docs

placid skiff
#

ctx is just the name of a variabel D_D

quaint epoch
#

!d disnake.InteractionResponse.defer

unkempt canyonBOT
#

await defer(*, ephemeral=False, with_message=False)```
This function is a [*coroutine*](https://docs.python.org/3/library/asyncio-task.html#coroutine).

Defers the interaction response.

This is typically used when the interaction is acknowledged and a secondary action will be done later.
quaint epoch
#

yeah, here ya go

junior verge
#

I don't use disnake

quaint epoch
#

!d disnake.Interaction.response

unkempt canyonBOT
#

Returns an object responsible for handling responding to the interaction.

A response can only be done once. If secondary messages need to be sent, consider using followup instead.

quaint epoch
slate swan
junior verge
#

It's pycord.

quaint epoch
#

👀

junior verge
#

It seemed pretty easy for slash commands

placid skiff
slate swan
#

pycord is the last thing i would try

quaint epoch
slate swan
junior verge
#

It just seemed easy, thought it was worth a try

supple thorn
#

I didn't know Blvck has a fiverr

slate swan
quaint epoch
# slate swan why not, its open for everybody

just that, pycord is the odd one out, some names in the documentation are different from disnake. so theoretically, if you were switching from dpy to disnake, you just change an import and you are good. But if you change to pycord, you need to changes references in the code as well. Much more annoying tbh

slate swan
#

discord.commands 🏃‍♂️

tough lance
#

For defer its ctx.interaction.response.defer

#

The docs aren't that bad

quaint epoch
#

Wait, people import stuff from other libs to use in a different lib? like py from disnake.ext import commands import discord?

placid skiff
slate swan
#

some things may work, like enums

supple thorn
quaint epoch
slate swan
quaint epoch
slate swan
quaint epoch
#

and also it's discord.ext.commands

quaint epoch
#

idk im just overall biased towards disnake as a better wrapper

tough lance
#

Pycord is really criticized alot

supple thorn
#

Is Blvck italian?

quaint epoch
junior verge
#

With deferring it works, just getting this now

placid skiff
quaint epoch
junior verge
#

I did

quaint epoch
#

you got an attribute that doesn't exist

quaint epoch
#

an object was type NoneType and you tried to get an attribute from this

junior verge
quaint epoch
#

there will be no message

slate swan
placid skiff
#

Command interactions are not messages D_D

tough lance
slate swan
#

🏃‍♂️ im not a fork fan so i dont really like any of them tbh

quaint epoch
#

lets fucking go, my teacher just announced 3 days a row of no french period

junior verge
tough lance
junior verge
#

So message is replaced with interaction

tough lance
#

It's even worse

quaint epoch
unkempt canyonBOT
quaint epoch
#

yup

slate swan
slate swan
#

hikari ftw

quaint epoch
#

😬

slate swan
slate swan
supple thorn
quaint epoch
#

this is what im talking about

supple thorn
#

Couldn't get on fiverr though.

tough lance
#

Upwork is kinda good but the fees are high

slate swan
placid skiff
junior verge
quaint epoch
#

read the pycord docs on interactions

supple thorn
#

Welp

hoary cargo
quaint epoch
#

im not going in there

supple thorn
#

Back to finding where to start learning machine learning

#

Ping me when drama is here

slate swan
#

🏃‍♂️ if you really find pycord bad, improve it by making prs

quaint epoch
#

pycord btw

slate swan
quaint epoch
#

it has a message?

#

you have got to be kidding me

slate swan
#

that's not what the first argument in a slash command is ( in pycord)

hoary cargo
quaint epoch
#

why does pycord have to differ in references

#

every dev hates it, every beginner hates it, everyone hates it

placid skiff
junior verge
#

So does anyone know how I can fix my error

slate swan
#

controversial topic but, why does pycord exist?

quaint epoch
tough lance
hoary cargo
supple thorn
#

I wished my school has coding classes

quaint epoch
#

smh

slate swan
supple thorn
#

None of the schools i went to had coding classes

slate swan
supple thorn
#

One of my schools had like 30 computers in one room

supple thorn
#

In the 3 years i went there

#

I never once seen someone use those pcs

quaint epoch
junior verge
quaint epoch
placid skiff
supple thorn
#

Tbh i think those PCs were for effects

slate swan
tough lance
slate swan
junior verge
hoary cargo
#

Scratch 🗿

slate swan
#

🤦‍♂️

quaint epoch
#

well, there is also scratch and edublocks which are millions of times better compared to code.org

junior verge
#

Just does this

slate swan
quaint epoch
junior verge
#

Yeah?

quaint epoch
#

and i asked for the code

junior verge
#

Yes 1s

hoary cargo
#

why you use pycord
because it's easy to do slash commands
he still tries to do a slash command for hours in pycord
very easy

tough lance
#

Pog

quaint epoch
#

just lemon, not a custom lemon, just lemon. You'll never know why i sent it

slate swan
#

the fact that noone here uses hikari makes me sad 😩

junior verge
#

!paste

slate swan
quaint epoch
tough lance
quaint epoch
#

disnake cultgang

junior verge
#

Erm I think I will xd

tough lance
#

Srry wrong reply

hoary cargo
quaint epoch
#

oh yeah, and show the FULL traceback

#

because that seems to be like half of it

slate swan
slate swan
tough lance
#

As I'm saying, the message hasn't been sent yet so you can't access it

junior verge
slate swan
junior verge
#

So what does the defer needs to be then

hoary cargo
#

also, why people use ctx on interactions sad it gets confused, it's common sense

placid skiff
slate swan
slate swan
slate swan
tough lance
#

@junior verge why don't you just use datetime.datetime.now() for the timestamp

quaint epoch
#

bruh

hoary cargo
#

remove message

quaint epoch
#

you have to be kidding me

#

you didn't check for the member object properly

slate swan
#

I love how py-cord is so cool, ||a million uwus for py-cord||

tough lance
#

Lmfao

quaint epoch
#
import discord
from discord.ext import commands
from discord.commands import(slash_command)
from datetime import datetime

class Whois(commands.Cog):

    def __init__(self, client):
        self.client = client
    
    @commands.Cog.listener()
    async def on_ready(self):
        print(f"{self.__class__.__name__} Cog has been loaded\n-----")

    @slash_command(name="whois",aliases=['userinfo'],description="Gives info about a user",guild_ids=[867086205182017536])
    async def whois(self, ctx, member: discord.Member = None):
        await ctx.interaction.response.defer()
        if member is None:
            member = ctx.author
        member = ctx.author if not member else member 
        roles = [role for role in member.roles]

        embed = discord.Embed(colour=member.color, timestamp=ctx.interaction.message.created_at)

        embed.set_author(name=f"User Info - {member}")
        embed.set_thumbnail(url=member.avatar_url)
        embed.set_footer(text=f"Requested by {ctx.author} - https://daxbot.net", icon_url=ctx.author.avatar_url)

        embed.add_field(name="ID:", value=member.id)
        embed.add_field(name="User name:", value=member.display_name)

        embed.add_field(name="Created at:", value=member.created_at.strftime("%a, %#d %B %Y, %I:%M %p UTC"))
        embed.add_field(name="Joined at:", value=member.joined_at.strftime("%a, %#d %B %Y, %I:%M %p UTC"))

        embed.add_field(name=f"Roles ({len(roles)})", value=" ".join([role.mention for role in roles]))
        embed.add_field(name="Top role:", value=member.top_role.mention)

        await ctx.respond(embed=embed)


def setup(client):
    client.add_cog(Whois(client))```
slate swan
#

why cant you just datetime.now() instead of checking when the interaction was created, waste of time.

quaint epoch
#

there you go

quaint epoch
#

you just needed to change a boolean

#

that was the most likely the problem

#

smh

hoary cargo
quaint epoch
#

lol dude just make it a mandatory arg

slate swan
slate swan
tough lance
#

Like optional arg

slate swan
junior verge
placid skiff
hoary cargo
quaint epoch
#

!e from datetime import datetime
from time import sleep
t1 = datetime.now()
sleep(2)
print(datetime.now() - t1)

unkempt canyonBOT
#

@quaint epoch :white_check_mark: Your eval job has completed with return code 0.

0:00:02.008814
slate swan
quaint epoch
#

okay nice

#

okay, but lets get down to the root of the problem

junior verge
#

haha

slate swan
quaint epoch
#

why use slash commands? there is no real incentive. If discord wants you to migrate to slash, just provide free hosting, great incentive.

hoary cargo
slate swan
unkempt canyonBOT
#
Bad argument

Unable to convert 'bm' to valid command, tag, or Cog.

quaint epoch
#

!src bookmark

unkempt canyonBOT
#
Bad argument

Unable to convert 'bookmark' to valid command, tag, or Cog.

quaint epoch
#

tf

slate swan
#

its a command for @lament depot

#

@junior verge ||just ignore if you think people are making fun of you||

quaint epoch
slate swan
#

.src bookmark

placid skiff
#

OH I FINALLY FOUND IT

placid skiff
slate swan
slate swan
#

I think i will just go away

placid skiff
#

it has no message attribute

hoary cargo
quaint epoch
placid skiff
#

man now do a favor to everyone, burn your pc with pycord, buy a new one and install disnake

slate swan
#

or just uninstall pycord and install disnake. let the pc stay safe

hoary cargo
placid skiff
slate swan
#

but that has already been infected

hoary cargo
#

when i think about that i almost installed pycord damn but it was a last moment decision to try disnake first

placid skiff
#

i used nextcord for a while but then i became a good developer

slate swan
#

thank god i did pip install pycord instead of pip install py-cord shipit

tough lance
#

I've seen that nextcord is the most respected fork

slate swan
#

well, people here are completely based on disnake

placid skiff
#

well when i moved to disnake nextcord hadn't had slash commands yet

little ivy
#

How can i get the output of my dropdown menu?

frozen patio
#

Why is it saying invalid syntax when there is not supposed to be a comma?

slate swan
#

no, thats not a capital i

frozen patio
#

Oh

#

It was supposed to be a lowercase L

slate swan
#

right

frozen patio
#

Thanks

#

That also fixed my ( problem

slate swan
frozen patio
#

I thought it was a capital L

#

😅

slate swan
maiden fable
#

Bro, #bot-commands exists @slate swan

slate swan
#

;-;

slate swan
slate swan
muted quarry
#

!pastebin

unkempt canyonBOT
#

Pasting large amounts of code

If your code is too long to fit in a codeblock in discord, you can paste your code here:
https://paste.pythondiscord.com/

After pasting your code, save it by clicking the floppy disk icon in the top right, or by typing ctrl + S. After doing that, the URL should change. Copy the URL and post it here so others can see it.

slate swan
#

#bot-commands

#

btw hi

tough lance
#

Hi

hoary cargo
#

CatAwk that's the new trend to #bot-commands people?

slate swan
#

he just randomly came and pinged me

#

100% chat snipe

maiden fable
maiden fable
stone beacon
#

🗿

left crater
#

it should...

placid skiff
left crater
#

ur using it wrong

placid skiff
#

!d discord.Emoji

unkempt canyonBOT
#

class discord.Emoji```
Represents a custom emoji.

Depending on the way this object was created, some of the attributes can have a value of `None`...
placid skiff
#

open the link

#

nope

#

custom emojis are sent by <:emoji_name:id>

#

then something is wrong D_D

#

means nothing, there are some checks that you can do to find what is the problem. first of all you have to retrieve the emoji object with:
emoji = await ctx.guild.fetch_emoji(emoji_id)

spring flax
#

Don't forget ```py
else:
print('Ignoring exception in command {}:'.format(ctx.command), file=sys.stderr)
traceback.print_exception(type(error), error, error.traceback, file=sys.stderr)

placid skiff
#

then there are some methods and parameters that you can use to check what is wrong like:
Emoji.require_colons -> equals true if colons are requires to use this emoji in the client (:PJSalt: vs PJSalt)
Emoji.available -> whether the emoji is available for use
Emoji.is_usable() -> whether the bot can use this emoji

#

those returns all True or False

grizzled sluice
maiden fable
#

Code

hollow plover
#

what iam i doing wrong here?

#

gives a error

slate swan
#

you need to create an instance of the components class

hollow plover
#

yes i diid

#

that is too long to take picture

#

here

cold sonnet
#

RPS = class itself
RPS() = class instance

hollow plover
#

and so on

#

wdym

#

how should i do it then

bright palm
#

You should at least pass the choice to the view

sick birch
#

Be careful with that

#

It's going to consume all errors

edgy lion
#
class Reminder(discord.ui.Button):
    def __init__(self):
        super().__init__(label="Get Notification", style=discord.ButtonStyle.grey, emoji="![remind](https://cdn.discordapp.com/emojis/915193200539475988.webp?size=128 "remind")")
        self.value = None
        self.disabled = False

    async def callback(self, interaction: Interaction) -> None:
        self.value = "getNotification"
        await interaction.response.send_message(
            f"![info](https://cdn.discordapp.com/emojis/913128358672465981.webp?size=128 "info") I'll remind **{interaction.user}** once this server can be bumped again.",
            ephemeral=True)

        main = sqlite3.connect('main.sqlite')
        cursor = main.cursor()
        sql = (
            "INSERT INTO nextBumpReminder(start, time, user_id, channel_id, guild_id) "
            "VALUES(?,?,?,?,?)")
        val = (
            datetime.datetime.now(), 21600, interaction.user.id, interaction.channel.id, interaction.guild.id
        )
        cursor.execute(sql, val)
        main.commit()

        self.disabled = True``` 

```py
                     embed = discord.Embed(
                                    description=f"Bumped in **{i}** Servers!\n"
                                                f"React on ![remind](https://cdn.discordapp.com/emojis/915193200539475988.webp?size=128 "remind") to get the Notification about next bump time.",
                                    color=0xffffff)
                                embed.set_author(name='Successfully',
                                                 icon_url='https://cdn.discordapp.com/emojis/905158482884452452.png?size=128')
                                embed.timestamp = datetime.datetime.utcnow()

                                view = View()
                                view.add_item(Reminder())
                                await interaction.edit_original_message(
                                    embed=embed,
                                    view=view
                                )``` why is the button not disabled?
https://cdn.discordapp.com/attachments/381965515721146390/961265195324424212/unknown.png
cold sonnet
#

you don't know what RPS is

#

he might do in the class

sick birch
bright palm
edgy lion
cold sonnet
#

deciding to start another game

hollow plover
#

rps = rock peper scisor

cold sonnet
#

and you aren't making it any clear

#

show us the class

hollow plover
#

ok

#

theres more but it doenst fit on one pic

slate swan
#

send the code

#

!code

unkempt canyonBOT
#

Here's how to format Python code on Discord:

```py
print('Hello world!')
```

These are backticks, not quotes. Check this out if you can't find the backtick key.

stone beacon
#

!d discord.Colour.green

unkempt canyonBOT
#

classmethod green()```
A factory method that returns a [`Colour`](https://discordpy.readthedocs.io/en/master/api.html#discord.Colour "discord.Colour") with a value of `0x2ecc71`.
cold sonnet
#

lemme guess botchoose undefined

hollow plover
#

no

#

wait

slate swan
slate swan
hollow plover
#

discord.ext.commands.errors.CommandInvokeError: Command raised an exception: TypeError: to_components() missing 1 required positional argument: 'self'

cold sonnet
hollow plover
#

where

cold sonnet
#

you forgot a bracket

#

or
Perhaps you forgot a comma?

slate swan
#

send full code

hollow plover
#

where should i add

slate swan
#

!pastebin

unkempt canyonBOT
#

Pasting large amounts of code

If your code is too long to fit in a codeblock in discord, you can paste your code here:
https://paste.pythondiscord.com/

After pasting your code, save it by clicking the floppy disk icon in the top right, or by typing ctrl + S. After doing that, the URL should change. Copy the URL and post it here so others can see it.

hollow plover
slate swan
#

ye

hollow plover
#

ah ok ill use pastebin

#

one sec

hollow plover
hollow plover
#

my new bot so no cogs

#

if u need traceback tell but ill need to blot out name so idk

#

?

sick birch
# edgy lion no?

Well, you should be using a non-blocking connector such as aiosqlite

stone beacon
#

^ it does make a difference, trust me

hushed galleon
#

ashley is still right, you've defined view = RPS where RPS is the class, but what dpy needs is an instance of that view

hollow plover
#

wdym

little ivy
#

Hi, i have a dropdown menu atm, but i need to make it create a channel for every option that is selected. For example. I chose order, so it needs to create a channel. But i dont know how to detect when an option is clicked.

hushed galleon
#

its fundamental OOP, a class is a blueprint whereas an instance is a physical thing made from that blueprint

hollow plover
#

what-

edgy lion
# sick birch Well, you should be using a non-blocking connector such as aiosqlite
class Reminder(discord.ui.Button):
    def __init__(self):
        super().__init__(label="Get Notification", style=discord.ButtonStyle.grey, emoji="![remind](https://cdn.discordapp.com/emojis/915193200539475988.webp?size=128 "remind")")
        self.value = None
        self.disabled = False

    async def callback(self, interaction: Interaction) -> None:
        self.value = "getNotification"
        await interaction.response.send_message(
            f"![info](https://cdn.discordapp.com/emojis/913128358672465981.webp?size=128 "info") I'll remind **{interaction.user}** once this server can be bumped again.",
            ephemeral=True)

        db = await aiosqlite.connect("main.sqlite")
        await db.execute(
            "INSERT into 'nextBumpReminder' (start, time, channel_id, user_id, guild_id) values(?,?,?,?,?)",
            (
                datetime.datetime.now(), 21600, interaction.user.id, interaction.channel.id, interaction.guild.id)
        )
        await db.commit()
        
        self.disabled = True``` done
sick birch
sick birch
little ivy
#
guild = client.get_guild(959432789164437604)


@client.command()
async def ticketmenu(ctx):
    ticket_channel=client.get_channel(959432789772619791)
    embed = discord.Embed(title="🎫〡Tickets", color=0x93FF90, description="To create a ticket, please choose your category below.\n\n**__THIS IS NOT TO CREATE A SUPPORT TICKET__**")
    embed.set_footer(text="© SuperSupport")
    embed.set_thumbnail(url="https://cdn.discordapp.com/attachments/960115497830068234/960116218759626792/nobackgr7627411_app_communication_phone_call_conversation_icon.png")
    await ticket_channel.send(embed=embed)
    print ("Embed gemaakt")
    msg = await ticket_channel.send(components=[SelectMenu(custom_id="test", placeholder="Choose you ticket category", max_values=1, options=[SelectOption("💳〡Order", "value 1"), SelectOption("❓〡Questions", "value 2"), SelectOption("👮〡Complaints", "value 3")])])

slate swan
#

h?

edgy lion
sick birch
#

Because self.disabled = True doesn't actually disable it on discord

slate swan
#

ok

little ivy
slate swan
#

what is type

serene jay
#

any good resources to get started on bot dev?

slate swan
#

wait a sec

serene jay
#

oki

edgy lion
serene jay
sick birch
sick birch
little ivy
# serene jay dont send picture of code, send code in text form please
@client.event
async def on_select_option(interaction):
    if interaction.message.id == 961260048112308344:
        await interaction.respond(type=6)
        if interaction.values[0] == "value 1":
            await interaction.author.send("Menu 1")
        elif interaction.values[0] == "value 2":
            await interaction.author.send("Menu 2")
serene jay
#

better (still dunno lol)

edgy lion
# sick birch You need to edit the message with the new view
embed = discord.Embed(
    description=f"Bumped in **{i}** Servers!\n"
                f"React on ![remind](https://cdn.discordapp.com/emojis/915193200539475988.webp?size=128 "remind") to get the Notification about next bump time.",
    olor=0xffffff)
embed.set_author(name='Successfully',
                 icon_url='https://cdn.discordapp.com/emojis/905158482884452452.png?size=128')
embed.timestamp = datetime.datetime.utcnow()

view = View()
view.add_item(Reminder())
await interaction.edit_original_message(
    embed=embed,
    view=view
)
await view.wait()
await interaction.edit_original_message(
    view=view
)```
#

?

serene jay
#

@slate swan where you gone?

serene jay
#

cause of the indents

slate swan
unkempt canyonBOT
#
Resources

The Resources page on our website contains a list of hand-selected learning resources that we regularly recommend to both beginners and experts.

serene jay
#

tyty

edgy lion
slate swan
#

i cant find

spring flax
slate swan
#

not python

little ivy
slate swan
spring flax
little ivy
slate swan
serene jay
#

ooooo

#

ty

spring flax
#

why are you using dislash and dpy?

slate swan
#

idk

spring flax
#

just use the master branch of dpy

slate swan
#

im lazy

spring flax
#

wth

#

it's not even to you

slate swan
#

i also use dpy

#

..

little ivy
spring flax
#

don't...

#

just use one

slate swan
#

why not?

serene jay
#

i think theres a new version of it

#

whats it called i forgor

slate swan
serene jay
#

nono

#

sum else

slate swan
#

nextcord?

serene jay
#

AH yes

hollow plover
#

how to get the user's name inside of a discord.Button?

#

anyone pls

slate swan
hollow plover
#

uh

slate swan
#

interaction.author

hollow plover
#

k thx

#

lemme try

hollow plover
#

what?

#

what

slate swan
#

wait

hollow plover
#

k

slate swan
#

uh

hollow plover
#

uh?

slate swan
hollow plover
#

ok

halcyon sparrow
#

pithink does anyone know about hikari-lightbulb here?

hollow plover
#

nop

slate swan
#

wait

hollow plover
#

does not work

#

ok

maiden fable
slate swan
maiden fable
#

Idk

slate swan
#

bruh

hollow plover
halcyon sparrow
#

I'm kind of stuck on an error handler.

hollow plover
#

hm uh

#

pycord

halcyon sparrow
#
exception lightbulb.errors.NotEnoughArguments(*args: t.Any, missing: t.Sequence[commands.base.OptionLike])```
slate swan
#

idk

hollow plover
#

bru hok thanks tho

slate swan
#

yes i got it

#

@hollow plover try interaction.user

hollow plover
#

thanks

slate swan
#

👍

#

I think u need to add something like "callback"

left crater
#

are you using discord components

slate swan
#

Nope

#

bussin message has been deleted

#

..

#

yes u can ask about every lib using python

#

..

#

Wait nvm😭😭😭😭

#

..

#

Ahem

#

Try printjng the interaction and remove "await interaction.send"

#
select = await bot.wait_for("select_option")
        print(select)
        label = select.value[0]
        print(label)```
#

somethjng like dat

quaint epoch
#

that is not how you use bot.wait_for

#

lemme show

slate swan
quaint epoch
#

dpy?

slate swan
quaint epoch
#

update dpy mg

slate swan
quaint epoch
#

py -m pip install discord.py --upgrade

#

plz

#

i can't read code from 69 b.c.e

slate swan
quaint epoch
#

but anyway

#
try:
  thing = await bot.wait_for(event=str, timeout=int, check=lambda)
# "thing" would be the object returned for the event specified
except asyncio.exceptions.TimeoutError: # this code runs when the timeout runs out
  pass
else: # this code runs when the check is met before timeout runs out
  pass
halcyon sparrow
#

I fixed the thing. I looped trough it

slate swan
boreal ravine
quaint epoch
#

!d disnake.ext.commands.Bot.wait_for

unkempt canyonBOT
#

wait_for(event, *, check=None, timeout=None)```
This function is a [*coroutine*](https://docs.python.org/3/library/asyncio-task.html#coroutine).

Waits for a WebSocket event to be dispatched.

This could be used to wait for a user to reply to a message, or to react to a message, or to edit a message in a self-contained way.

The `timeout` parameter is passed onto [`asyncio.wait_for()`](https://docs.python.org/3/library/asyncio-task.html#asyncio.wait_for "(in Python v3.10)"). By default, it does not timeout. Note that this does propagate the [`asyncio.TimeoutError`](https://docs.python.org/3/library/asyncio-exceptions.html#asyncio.TimeoutError "(in Python v3.10)") for you in case of timeout and is provided for ease of use.

In case the event returns multiple arguments, a [`tuple`](https://docs.python.org/3/library/stdtypes.html#tuple "(in Python v3.10)") containing those arguments is returned instead. Please check the [documentation](https://docs.disnake.dev/en/latest/api.html#discord-api-events) for a list of events and their parameters.

This function returns the **first event that meets the requirements**...
quaint epoch
#

read the docs

boreal ravine
#

it is

#

but the event name doesn't make much sense

slate swan
quaint epoch
#

it raises an exception if the timeout runs out, since most people use a timeout, it makes most sense to put it in a try/except block

boreal ravine
quaint epoch
#

picture from the docs-

slate swan
boreal ravine
#

what library?

slate swan
boreal ravine
#

d.py didn't even have interaction related stuff until 2.0

quaint epoch
quaint epoch
#

!d discord.ext.commands.Bot.wait_for

unkempt canyonBOT
#

wait_for(event, /, *, check=None, timeout=None)```
This function is a [*coroutine*](https://docs.python.org/3/library/asyncio-task.html#coroutine).

Waits for a WebSocket event to be dispatched.

This could be used to wait for a user to reply to a message, or to react to a message, or to edit a message in a self-contained way.

The `timeout` parameter is passed onto [`asyncio.wait_for()`](https://docs.python.org/3/library/asyncio-task.html#asyncio.wait_for "(in Python v3.10)"). By default, it does not timeout. Note that this does propagate the [`asyncio.TimeoutError`](https://docs.python.org/3/library/asyncio-exceptions.html#asyncio.TimeoutError "(in Python v3.10)") for you in case of timeout and is provided for ease of use.

In case the event returns multiple arguments, a [`tuple`](https://docs.python.org/3/library/stdtypes.html#tuple "(in Python v3.10)") containing those arguments is returned instead. Please check the [documentation](https://discordpy.readthedocs.io/en/master/api.html#discord-api-events) for a list of events and their parameters.

This function returns the **first event that meets the requirements**...
quaint epoch
#

check this^

#

it is the exact same

#

he just has to update dpy lol

slate swan
hushed galleon
#

they said they were using discord-components

hushed galleon
#

that lib monkey-patches dpy to add components= and those events

hybrid mural
#

Is there a reason my bot can only be in a voice channel on 1 server?

boreal ravine
hybrid mural
#

not in that way

#

i meant on different servers

#

is it not able to be in a voice channel on different servers

boreal ravine
#

it is

hybrid mural
#

For some reason mine will only be in 1 server

slate swan
#

Probably something to do with your code, bots can join a voice channel in multiple servers at the same time

little ivy
#

How can i make tickets via a dropdown menu?

cloud dawn
#

Do you have a ticket system?

little ivy
#

I'm sorry sir, I just need to know how to make: when someone clicks on "order" then a new channel gets created. I cant find it anywhere on the internet

#

i tought: async def on_select_option but that doesnt work

cloud dawn
little ivy
#

yeah

cloud dawn
#

What library are you working with?

little ivy
hushed galleon
#

probably not a good idea to mix two monkeypatching libraries together

little ivy
#

Yeah i know

#

but i searched on the internet for an option to create channel on click button and didnt find anything

cloud dawn
#

I have never worked with dislash or discord_components sorry

hushed galleon
#

dpy 2.0 and forks like disnake implement buttons using Views

sick birch
little ivy
#

please teach me how to do it 😇

sick birch
cloud dawn
hushed galleon
#

they're often much easier to work with (especially with state) since you essentially write the functions for each component, and dpy figures out which button is clicked and calls the correct function for you

sick birch
cloud dawn
sick birch
#

For sure. I've already seen people copying them

#

The whole point is to help you learn

cloud dawn
#

Still using heavy OOP and super to use View is making it kind of difficult.

little ivy
#

I get the error ui and select dont exist

sick birch
little ivy
#

i am a noob, how do i check it?

hushed galleon
little ivy
#

im so sorry for asking

hushed galleon
#

you're probably on dpy 1.7.3

cloud dawn
cloud dawn
#

2.0.0 will be released soon 🥳

lament mesa
hushed galleon
#

you will need to download the repo and install it manually then

#

just note that whatever lib you choose will have a bunch of breaking changes you need to migrate to

little ivy
little ivy
#

done

#

but still the same error

hushed galleon
#

restart your console so the PATH gets updated

cloud dawn
little ivy
#

oh yeah now i get it

#

it's done installing 2.0

#

so now ui and select should work?

spring flax
#

yes

hushed galleon
#

make sure you fix any breaking changes

little ivy
#

ImportError: cannot import name 'InvalidArgument' from 'discord'

hushed galleon
#

can you show the full traceback

cloud dawn
#

he is doing discord.InvalidArgument

hushed galleon
#

or if its in your import statements remove it from there

little ivy
cloud dawn
#

InvalidArgument is a build in error.

#

So you don't need to import anything.

spring flax
#

it has to be imported from discord.ext.commands

little ivy
#

so if i add discord.ext.commands on top of my script, that should help?

hushed galleon
#

still can you show the entire error message

spring flax
#

ah

hushed galleon
#

there ya go, discord-components is incompatible with 2.0

little ivy
#

How do i fix that?

hushed galleon
#

uninstall it and never use it again.

little ivy
#

the 2.0 i just installed?

hushed galleon
#

nah discord-components i mean

hoary cargo
#

🗿 lmao

little ivy
#

where should that be located in my files?

hoary cargo
#

you jsut pip/pip3 uninstall

hushed galleon
#

you remember how you installed it with pip? do the reverse with pip uninstall

little ivy
#

oh okay

#

so py -m pip uninstall

hushed galleon
#

yea, with discord-components as the package

little ivy
#

Done 😛

hushed galleon
#

any previous code you had with it (also dislash, that is most likely incompatible too), you can comment those out for now

little ivy
#

just remove them from my script?

hushed galleon
#

you probably want to remember what you wrote before so you can reimplement them with dpy

little ivy
#

I now have these errors

loud frost
hushed galleon
#

is there an error above that one?

loud frost
#

nah jk bro

little ivy
little ivy
cloud dawn
hushed galleon
#

its a windows bug but it usually doesnt have any effect

loud frost
little ivy
cloud dawn
unkempt canyonBOT
#

Pasting large amounts of code

If your code is too long to fit in a codeblock in discord, you can paste your code here:
https://paste.pythondiscord.com/

After pasting your code, save it by clicking the floppy disk icon in the top right, or by typing ctrl + S. After doing that, the URL should change. Copy the URL and post it here so others can see it.

little ivy
#

website blocked by antivirus

cloud dawn
#

Then your antivirus is having a stroke

frozen patio
#

What is wrong with this

#

The terminal just doesn't do anything when I run the file

cloud dawn
#

import nextcord isn't used

#

You are connecting the db in on_ready

frozen patio
#

Yeah it worked now 😶

#

Cannot believe I forgot that

formal basin
#

Anyone know how I can get an invite link from a discord server that my bot is in

torn sail
#

i dont think thats something u should be doing

sick birch
#

Especially not without an IF NOT EXISTS clause

#

Ah looks like you already have one

torn sail
sick birch
#

You'e still making a new connection every time on_ready is called, which can happen for seemingly no reason at all

boreal ravine
frozen patio
#

But I needed to make one

sick birch
#

A new connection?

frozen patio
#

No

sick birch
#

You should only have one global connection and derive cursors from there

frozen patio
#

It's all fixed tho

frozen patio
sick birch
#

I know

#

But that still applies

frozen patio
#

Yes

maiden fable
#

What if its a private server @formal basin

hoary cargo
#

you can't say it's illegal or something, after all, the admin adding the bot will see what perms give to the bot

#

it's kinda unethical

little ivy
boreal ravine
#

that's not an error

little ivy
#

how do i fix those? Script wont work

little ivy
#

otherwise my script would work

boreal ravine
little ivy
lament mesa
hoary cargo
#

you either use disnake or discord, never both.

hoary cargo
little ivy
#

wich one?

hoary cargo
#

well, you should say, i don't see your code

little ivy
#

what line do i need to show u

boreal ravine
sick birch
#

You’re on 1.7.3

#

Uninstall either dpy or disnake and upgrade

hoary cargo
#

sure

sick birch
#

That’s a terrible idea

hoary cargo
#

wouldn't call it "terrible"

sick birch
#

I would

#

It’s not very difficult to use find and replace

hoary cargo
hushed galleon
# lament mesa sqlite doesn't have a BIGINT datatype

technically sure, but SQLite is compatible with BIGINT columns since it gets interpreted as INTEGER affinity which can store between 0-8 bytes
(that does also mean INTEGER and BIGINT in sqlite are equivalent)

sick birch
hoary cargo
#

and tbh, i don't see how is a terrible idea as long as you don't have discord installed

little ivy
#

how do i downgrade back to 1.7.3??

hushed galleon
#

also boaz your error is probably a symptom of another bug / breaking change, hence why pasting your code would be a good idea

pliant citrus
slate swan
hoary cargo
#

pip install --upgrade discord.py==1.7.3

clear plinth
#

Any recommendations for hosting a bot? New to this side of things. Was looking at heroku but saw the pin warning against it

slate swan
#

just uninstall it and install it back again using pip

hoary cargo
pliant citrus
#

why cross out the text???

hushed galleon
slate swan
#

dont mind the formatting

#

just copy pasted it

maiden fable
hoary cargo
maiden fable
#

w o w

pliant citrus
maiden fable
#

Bro, replit isn't meant to keep yr bot alive

slate swan
#

uptimerobot banned replit.

maiden fable
#

Yea

#

Proceeds to use a freenom domain and connect it to my repl

hoary cargo
#

gigachad

join replit
spam discord API
everyone gets rate limited

maiden fable
#

No thanks

slate swan
#

🏃‍♂️ proceeds with hacker plan

maiden fable
#

I hate those people ngl

maiden fable
abstract kindle
#

anyone got an example of d.py 2.0 button?

maiden fable
#

yea

abstract kindle
#

I cannot get this to work, it's givin me interaction failed every time

slate swan
slate swan
maiden fable
#
async def cmd(...):
    view = ui.View()
    view.add_item(Button(...))
    await ctx.send("Hi", view=view)
abstract kindle
#

I see. I was looking at a gist and they said that was an inefficient way to do it.

hoary cargo
abstract kindle
#

But if it works

maiden fable
abstract kindle
#

yeah

maiden fable
#

Their expectations from us devs are weird 🤷

abstract kindle
#

It seems strange

#

Like, make a subclass for every time you want a different button with a different response?

slate swan
#

with all the kwargs in the button decorator

#

ikr

abstract kindle
#

Would you have to create a new one of those every time you wanted to create a button that did something different?

maiden fable
abstract kindle
#

That's what I'm thinking

slate swan
maiden fable
#

Nothing more than an overkill

maiden fable
abstract kindle
hushed galleon
#

View subclasses are good when your components are more complex, e.g. requiring several variables and having interconnected functionality of components (think of a paginator), so offloading the state management to a view usually simplifies your command

maiden fable
slate swan
maiden fable
#

Like if this is the case, why not subclass commands.Bot for an on_ready and other events lmao

slate swan
#

sometimes, subclassing is just useless 🏃‍♂️

slate swan
#

like for a url button

abstract kindle
#
 class Buttons(discord.ui.View):
            def __init__(self, *, timeout=180):
                super().__init__(timeout=timeout)

            @discord.ui.button(label="Confirm Button", style=discord.ButtonStyle.green)
            async def green_button(self, button: discord.ui.Button, interaction: discord.Interaction):
                await interaction.response.edit_message(embed=success_embed)
                await user.update_balance(amount * 5000)
                await user.update_coconuts(-amount)

            @discord.ui.button(label="Cancel Button", style=discord.ButtonStyle.red)
            async def red_button(self, button: discord.Interaction, interaction: discord.Interaction):
                await interaction.response.edit_message(message=timeout_embed, view=self)

        await ctx.send(embed=confirm_embed, view=Buttons())
hushed galleon
#

url button is probably the only case where you dont need a subclass of any button or view

tired hinge
#

how can i check if a message is mentioning a user, if i only have the user's username, tag and id?

hoary cargo
#

on_message commands devs hmmm

maiden fable
abstract kindle
#

When I do this, and I click the button, it keeps saying "Button" has no attribute "response"

#

Like, interaction is coming through as Button

maiden fable
hushed galleon
abstract kindle
#

...

#

Lol

#

How wonderful

maiden fable
slate swan
abstract kindle
#

Perfect. Thanks @hushed galleon

hushed galleon
#

for a button that sends a message on click, you’d only need one button subclass and a parameter that takes the message you want for it to be reusable anywhere

hoary cargo
slate swan
#

what if i dont even develop bots

maiden fable
hoary cargo
#

you're not a bot developer then mikedone

lament mesa
hoary cargo
maiden fable
maiden fable
lament mesa
#

haha nice

maiden fable
#

Don't make me hate English more with that long word

#

And nah, I ain't got schizophrenia or smth lmao

hoary cargo
#

hmmnote how accurate is this after you guys

slate swan
#

c++ aint that hard...

slate swan
maiden fable
slate swan
hushed galleon
maiden fable
slate swan
slate swan
abstract kindle
#

Do you have to write code to make the button one time use?

#

Cause I can just keep clickin it 😦

abstract kindle
#

using created_at and expires_at?

maiden fable
#

nope, subclass 👀

abstract kindle
#

oh

maiden fable
#

Mhm

slate swan
#

Pls help me

maiden fable
#

Pls give the code and problem

slate swan
#

Code:
main.py

import os
from discord.ext import commands
import obsidian

client = commands.Bot(command_prefix='+',help_command=None,activity=discord.Game('Дристаю толчёк 24/7'))

cogs = [obsidian]

for i in range(len(cogs)):
  cogs[i].setup(client)

@client.event
async def on_ready():
  print("Bot turned on")
client.run(os.environ["Token"])```

obsidian.py
```import discord
from discord.ext import commands

class Radio(commands.Cog):
  def __init__(self, client):
    self.client = client
    
  commands.command()
  async def join(self, ctx):
    if ctx.author.voice is None:
      embed = discord.Embed(title="Error! Pls,join to voice channel!")
      await ctx.send(embed=embed)
    if ctx.voice_client is None:
      channel = ctx.author.voice.channel
      embed1 = discord.Embed(title="Successful!Bot joined to voice channel!")
      await channel.connect()
      await ctx.send(embed1=embed1)

def setup(client):
  client.add_cog(Radio(client))```
maiden fable
#

!code

unkempt canyonBOT
#

Here's how to format Python code on Discord:

```py
print('Hello world!')
```

These are backticks, not quotes. Check this out if you can't find the backtick key.

abstract kindle
#

What do you mean by subclassing?

#

how would I disable it after one usage? There's no Interaction attribute that makes it one time use?

maiden fable
unkempt canyonBOT
#

Custom help commands in discord.py

To learn more about how to create custom help commands in discord.py by subclassing the help command, please see this tutorial by Stella#2000

junior verge
#

How do you get the unix timestamps in discord.py with datetime? Like for example when a user joined

maiden fable
#

!d datetime.datetime.timestamp

unkempt canyonBOT
#

datetime.timestamp()```
Return POSIX timestamp corresponding to the [`datetime`](https://docs.python.org/3/library/datetime.html#datetime.datetime "datetime.datetime") instance. The return value is a [`float`](https://docs.python.org/3/library/functions.html#float "float") similar to that returned by [`time.time()`](https://docs.python.org/3/library/time.html#time.time "time.time").

Naive [`datetime`](https://docs.python.org/3/library/datetime.html#datetime.datetime "datetime.datetime") instances are assumed to represent local time and this method relies on the platform C `mktime()` function to perform the conversion. Since [`datetime`](https://docs.python.org/3/library/datetime.html#datetime.datetime "datetime.datetime") supports wider range of values than `mktime()` on many platforms, this method may raise [`OverflowError`](https://docs.python.org/3/library/exceptions.html#OverflowError "OverflowError") for times far in the past or far in the future.

For aware [`datetime`](https://docs.python.org/3/library/datetime.html#datetime.datetime "datetime.datetime") instances, the return value is computed as:

```py
(dt - datetime(1970, 1, 1, tzinfo=timezone.utc)).total_seconds()
```   New in version 3.3.

Changed in version 3.6: The [`timestamp()`](https://docs.python.org/3/library/datetime.html#datetime.datetime.timestamp "datetime.datetime.timestamp") method uses the [`fold`](https://docs.python.org/3/library/datetime.html#datetime.datetime.fold "datetime.datetime.fold") attribute to disambiguate the times during a repeated interval.
junior verge
#

Then how do you get it to like <t:...:D>

narrow grail
#

can you edit an embed?

cloud dawn
narrow grail
lofty pecan
cloud dawn
lofty pecan
#

you can use Discohook

cloud dawn
#

!d discord.Member.joined_at

unkempt canyonBOT
#

An aware datetime object that specifies the date and time in UTC that the member joined the guild. If the member left and rejoined the guild, this will be the latest date. In certain cases, this can be None.

cloud dawn
lofty pecan
#

it's a website

#

but you could also use the message link

#

and then resend the message inside the message sent

cloud dawn
narrow grail
#

I mean, if my bot himself could edit an embed?

#

@lofty pecan

cloud dawn
lofty pecan
#

a url, so if you use that url you can edit a message, embed or not

cloud dawn
lofty pecan
#

I'm just giving a solution

cloud dawn
lofty pecan
#

if you don't know what message to edit then how are you supposed to edit it

cloud dawn
#

Just use the message id.

lofty pecan
#

I'm pretty sure that does the same

cloud dawn
#

Only you are suggesting raw posts where of I'm suggesting using a wrapper.

lofty pecan
#

okay and ?

#

I didn't know there was only one solution

cloud dawn
#

Okay and 99% of the people here don't make raw requests.

lofty pecan
#

chill a bit mate

cloud dawn
lofty pecan
#

idk you seem tense

#

I'm just suggesting something and you kinda sound passive aggressive

narrow grail
#

@storm cairn you do this with asyncio.sleep

storm cairn
#

Yeah I tried

#

Do I have to import something ?

cloud dawn
narrow grail
#

then it should work

left crater
#

send has a delete_after kwarg

little ivy
#

Why isnt this printing?
ping when reaction

twilit flame
#

if it's ticketmenu try putting the print before and see and if it's on_select_option print what interaction is giving before checking it

little ivy
rancid escarp
#

Any idea why i keep getting these messages?

RuntimeWarning: coroutine 'Command.call' was never awaited
print('Channel Name_After:- ' + channel_name_reset)
RuntimeWarning: Enable tracemalloc to get the object allocation traceback

I am trying to print within a function which executes fine except for the print part

twilit flame
little ivy
#

indeed

#

euhhhm

#

so what shouldi change

abstract kindle
#

I'm lost with disabling a button after its clicked.

#

Can I just remove the buttons after they're clicked? I feel like reactions are way better for me because I'm stupid

little ivy
rancid escarp
little ivy
#

everything goes perfect until @client.event

twilit flame
twilit flame
slate swan
#

!d disnake.ui.View.children

unkempt canyonBOT
slate swan
#

!d discord.ui.Button.disabled

abstract kindle
#

Sorry, I don't know how to use children

#

Or what they do. I'm not that advanced yet in my learning 😭

slate swan
#

children is a list of components in a view

#

just index it and disable the button

abstract kindle
#

i see

#

I'll give it a go

slate swan
#

!d discord.ui.Button.disabled

unkempt canyonBOT
slate swan
#

and just set the propery to False to disabled it and to enable it just set it to True

hybrid ravine
#

if i create a channel via discords api how would i return that id?

#

of ther chaannel i created

slate swan
#

!d discord.Guild.create_text_channel

unkempt canyonBOT
#

await create_text_channel(name, *, reason=None, category=None, position=..., topic=..., slowmode_delay=..., nsfw=..., overwrites=...)```
This function is a [*coroutine*](https://docs.python.org/3/library/asyncio-task.html#coroutine).

Creates a [`TextChannel`](https://discordpy.readthedocs.io/en/master/api.html#discord.TextChannel "discord.TextChannel") for the guild.

Note that you need the [`manage_channels`](https://discordpy.readthedocs.io/en/master/api.html#discord.Permissions.manage_channels "discord.Permissions.manage_channels") permission to create the channel.

The `overwrites` parameter can be used to create a ‘secret’ channel upon creation. This parameter expects a [`dict`](https://docs.python.org/3/library/stdtypes.html#dict "(in Python v3.10)") of overwrites with the target (either a [`Member`](https://discordpy.readthedocs.io/en/master/api.html#discord.Member "discord.Member") or a [`Role`](https://discordpy.readthedocs.io/en/master/api.html#discord.Role "discord.Role")) as the key and a [`PermissionOverwrite`](https://discordpy.readthedocs.io/en/master/api.html#discord.PermissionOverwrite "discord.PermissionOverwrite") as the value.

Note

Creating a channel of a specified position will not update the position of other channels to follow suit. A follow-up call to [`edit()`](https://discordpy.readthedocs.io/en/master/api.html#discord.TextChannel.edit "discord.TextChannel.edit") will be required to update the position of the channel in the channel list...
abstract kindle
#

I hate to keep asking, but I printed the list of children, i'm not sure how to change one of them

slate swan
hybrid ravine
abstract kindle
#

I'm trying to change disabled to True

unkempt canyonBOT
abstract kindle
#

I can print the list of children

slate swan
#

!e

children = ["component0","component"]
print(children[0])

example on how children works

unkempt canyonBOT
#

@slate swan :white_check_mark: Your eval job has completed with return code 0.

component0
abstract kindle
#

are they strings? when I printed the list, it looked like they weren't separated by commas

#
[<Button style=<ButtonStyle.success: 3> url=None disabled=False label='Confirm Button' emoji=None row=None>, <Button style=<ButtonStyle.danger: 4> url=None disabled=False label='Cancel Button' emoji=None row=None>]
slate swan
#

nah theyre not strings theyre objects its just an example

narrow grail
#

how to delete an embed?

abstract kindle
#

This is what I got when I printed self.children

slate swan
abstract kindle
#

... I see one comma in that whole list

#

self.children[1]?

slate swan
slate swan
abstract kindle
#

then how do i access disabled?

slate swan
#

self.children[1].disabled = True

abstract kindle
#

I suppose, but my IDE doesn't like that

#

It's highlighting disabled in yellow

slate swan
#

you index children which it returns an obj which then you use the property to set a bool value

slate swan
abstract kindle
slate swan
abstract kindle
narrow grail
slate swan
abstract kindle
#

I can still click the button

slate swan
#

you need to edit the view

#

with the new one

abstract kindle
#
await interaction.response.edit_message(embed=success_embed, view=self)
slate swan
#

yep!

abstract kindle
#

ok let me try

halcyon sparrow
#

What scopes are we supposed to set for bot invites?

slate swan
#

the scopes your bot needs!

abstract kindle
#

It worked. Thanks once again

halcyon sparrow
#

I put the commands one. It's giving me errors about needing another one. pithink it ran fine before tho. I'll invite him back properly

abstract kindle
#

I didn't realize they were objects

slate swan
slate swan
abstract kindle
#

I've never used children before, so I was just goin in blind

#

Plus the docs for the children doesn't say anything

#

other than it's a list

slate swan
#

i mean it does show what it would return you just need to check what obj it returns to apply methods etc

#

and if the docs arent clear read src AG_MochaThumbsUp

abstract kindle
#

src = source code?

slate swan
#

if you try to load a cog that already has been loaded it raises an error so just catch it

#

yes?

#

just catch the error and do something on it

#

no

#

is statement is used for comparing objects/entities which the if statement would return False

#

!d is

unkempt canyonBOT
#
is

6.10.3. Identity comparisons

The operators is and is not test for an object’s identity: x is y is true if and only if x and y are the same object. An Object’s identity is determined using the id() function. x is not y yields the inverse truth value. 4

slate swan
#

!e
print(0 == False, 0 is False)

unkempt canyonBOT
#

@slate swan :white_check_mark: Your eval job has completed with return code 0.

001 | <string>:1: SyntaxWarning: "is" with a literal. Did you mean "=="?
002 | True False
slate swan
#

== operator compares values while is compares entities

halcyon sparrow
#

So its the bot and aplications.command scope?

slate swan
#

if your bot uses slash commands yes

abstract kindle
#

I see. And if I clear the list of children, it just removes the buttons!

slate swan
#

no need

#

just set view to None

abstract kindle
#

Ah

slate swan
#

if you send an empty view it removes all buttons

abstract kindle
#

is one more efficient than the other?

slate swan
lost cliff
#

anyone know what are these and how to do them in discord.py? I couldnt find anything online and as far as I know theyre called "providers"

abstract kindle
#

hahah yes master

slate swan
slate swan
#

they just have an emoji with a url

lost cliff
#

how to do them

slate swan
#

theres examplea in repo so just check them out

lost cliff
#

ok thanks 😄

slate swan
lost cliff
#

im making discord bot for a friend 😄 so far its going kinda good. but the thing is most of the stuff In that code I couldnt remember so like 80% of the code is just stackoverflow

slate swan
lost cliff
#

like its just me not remembering the syntax because when I see the code most of the times I understand it

#

lol

slate swan
#

if you understand it thats great if you dont remember the exact syntax its fine were all humans!

lost cliff
#

:d

slate swan
lost cliff
#

hey um.
I cant find the buttons example in the repo

slate swan
lost cliff
#

oh thanks 😄

slate swan
#

No problemo fastnod

lost cliff
#

ok I see it thanks so much! 😄

hoary cargo
slate swan
slate swan
#

no nitro😔

narrow grail
#

how did the bot can know if someone on an other server used the same command?

#

I want to make a crossplay minigame

slate swan
#

hey i tried to make an event that when you send an message with "sus" it mutes you how do i make it ? i tried everything but nothing worked