#discord-bots

1 messages · Page 527 of 1

hasty iron
#

oh wtf

slate swan
#

lol

#

and nvm

lone lichen
#

Is it?

slate swan
#

Nope

#

as u can see from the bot above

lone lichen
#

Haha

hasty iron
#

well this isn’t related to discord bots so take it somewhere else

slate swan
#

oops

hasty iron
#

#bot-commands

lone lichen
slate swan
#

ROFL

hasty iron
#

no

slate swan
#

he really said that

lone lichen
hasty iron
#

i don’t have to be a mod to tell you to go to #bot-commands

#

use your brain for a second

lone lichen
slate swan
#

@lone lichen interesting

#

it worked for u guys

#

how come mine was diff?

eager yoke
#

Hi, it's possibl to send a hidden message without slash commands please ?

lone lichen
#

Try it in ur ide

slate swan
#

sum([len(item) for item in iterable])

hasty iron
#

dude the code you used is not comparable to what we were testing

eager yoke
slate swan
#
print(sum([len(item) for item in iterable]))```
lone lichen
slate swan
#

all of these come with python

sullen shoal
lone lichen
eager yoke
slate swan
#

Its for later

eager yoke
#

i can do it if i interact with !command ?

lone lichen
#

Ohh okok

lone lichen
#

Only interaction response object can send that kinds of messages

eager yoke
#

ok thanks 😄

slate swan
#

wait hold up..

#

what did he define item to???

#

in len(item)

#

OH WAIT FOR LOOP, that's why my thing was wrong

#

it said "from" 🤣

sullen shoal
#

that is basically comparable to the last line

#

although len(str) would count the whitespaces and that code wont

slate swan
#

So now

#

after i do this

#

I can pretty just use iter() in a loop to read every list ye?

#

value in the list*

sullen shoal
#

i already gave you my sol, if you do it correctly it will work pretty well

slate swan
#

alr cool

sullen shoal
#

i may have an one liner of it in my old bot , let me check

#
    @commands.command()
    async def rolemembers(self, ctx, role: discord.Role):
        if len(role.members) > 0:
            text = ', '.join(['`' + str(i) + '`' for i in role.members])
            if len(text) > 3170:
                text = ", ".join(
                    (text[0:3170]).split(',')[:-1]) + ', And more...'
        else:
            text = '0 Members'```
something like that  but you shouldn't try to copy from this, it might be confusing for you
slate swan
#

nono its fine

#

stap lemme be big brain for once

#

and problem solve this

sullen shoal
#

and it splits the text by , btw

slate swan
#

i noticed

sullen shoal
#

lol

boreal ravine
slate swan
#

@sullen shoal oh i just realized.. im gonna have to use join to connect them right?

slate swan
sullen shoal
slate swan
#

Im gonna problem solve it

sullen shoal
slate swan
#

then if the chars get to big

#

we move on to another list

#

i might be overcomplicating this

#

pretty sure

sullen shoal
#

what are you going to do to not cut the words in half still make it under 2000 length

slate swan
#

if it reaches 2000 or more when im counting the iter

#

im just not gonna include it in the list

#

and move on to another list

#

That was the idea, but im pretty sure thats overcomplicating

sullen shoal
#

:/

slate swan
#

hold up lemme do a bit of thinking rq

sullen shoal
#

you can try what ever u want but dont always stick to same kind of solutions like this, try to be better every time

slate swan
#

k

#

ill try

#

oh wait

#

i think i got

#

a way i can make this less complicated

#

I can "combine" all the previous values and make them 1

#

so like im editing the list as i go down the for loop

#

instead of making new ones

#

well not really less complicated

#

but like "easier to read the code"

#

like less clutterd

#

oh the correct syntax for this is join

#

just checked the api

#

so what i can do is, once it reaches the char limit, i can join the pervious list and continue on. Once the list limit reaches its max the loop ends like how it normally should. Then I can send the messages by intering the new list

sullen shoal
#

thats alot of spaghetti tho

slate swan
#

Not really

#

I'll show u what it looks like when i get it done

#

hold up

sullen shoal
#

aight

odd walrus
#
Traceback (most recent call last):
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\http.py", line 300, in static_login
    data = await self.request(Route('GET', '/users/@me'))
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\http.py", line 254, in request
    raise HTTPException(r, data)
discord.errors.HTTPException: 401 Unauthorized (error code: 0): 401: Unauthorized

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "C:\Users\Administrator\Desktop\lucas\grass.py", line 37, in <module>
    client.run(token)
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\client.py", line 723, in run
    return future.result()
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\client.py", line 702, in runner
    await self.start(args, **kwargs)
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\client.py", line 665, in start
    await self.login(args, bot=bot)
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\client.py", line 511, in login
    await self.http.static_login(token.strip(), bot=bot)
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\http.py", line 304, in static_login
    raise LoginFailure('Improper token has been passed.') from exc
discord.errors.LoginFailure: Improper token has been passed.
Exception ignored in: <function _ProactorBasePipeTransport.del at 0x00000107C8858C10>
Traceback (most recent call last):
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\asyncio\proactor_events.py", line 116, in del
    self.close()
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\asyncio\proactor_events.py", line 108, in close
    self._loop.call_soon(self._call_connection_lost, None)
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\asyncio\base_events.py", line 746, in call_soon
    self._check_closed()
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\asyncio\base_events.py", line 510, in _check_closed
    raise RuntimeError('Event loop is closed')
RuntimeError: Event loop is closed

Need help with this, works well on my PC but not working when i run it in a windows dedicated server
Checked the packages all were same version and dowloaded

sullen shoal
boreal ravine
#
    raise LoginFailure('Improper token has been passed.') from exc
discord.errors.LoginFailure: Improper token has been passed.
#

Regenerate your token back

slate swan
#

regenerate it in the developers screen

boreal ravine
slate swan
#
     items = rconpayload.split()
     currentLen = 0
     previousLen = 0
     lenLimit = 2000
     iteritem = iter(items)
     for item in next(iteritem):
       currentLen += len(item)
       if currentLen >= lenLimit:
         items[previousLen:currentLen-1]= [' '.join(items[previousLen:currentLen-1])]
         previousLen = currentLen
         currentLen += lenLimit
       
     items[previousLen:]= [' '.join(items[previousLen:])]
     for item in items:
         await ctx.send(item)```

@sullen shoal If this goes first time imma go nuts
#

wait wtf im dum, i added currentLen += lenLimit for no reason. Oops lemme remove that

#

wait tf im so slow lmao, I did items[previousLen:currentLen-1]= [' '.join(items[previousLen:currentLen-1])] all wrong. Forgot i need to state the INDEX its in, not the INDEX LEGNTH

river kindle
#

hi guys, i'm trying to run my bot code but i have a problem, when i try to run it it gives me the client.run error

it gives me an unauthorized login and a 401 error does anyone know how to fix?

slate swan
#

"unauthorized login"

river kindle
#

ok but the token is correct

slate swan
#

U sure about that?

river kindle
#

yes

slate swan
#

did u reload ur code?

#

wait I lied

#

i lied mb

river kindle
#

yes but it gives the same error

slate swan
#

If the code didnt work it would said loginfailure

#

token*

#

mb was thinking of the wrong error lol

river kindle
#

Improper token has been passed. (he tells me that)

slate swan
#

the error?

river kindle
#

yes

slate swan
#

okay then yeah

#

its ur token

river kindle
#

yes

slate swan
#

fix it then

#

if its not working regenerate

#

also make sure u using the bot token not the application id or smth

river kindle
#

I have already tried, but it gives me the same error

slate swan
#

Should look like this

river kindle
#

yes

slate swan
river kindle
#

yes

slate swan
#

Is it your bot or?

river kindle
#

yes

#

it is

slate swan
#

ok uh

coral spade
#

does anybody know how to put that ban command in an embed instead of a normal message i have been trying but i cant find out

@client.command()
@commands.has_permissions(ban_members=True)
async def unban(ctx, *, member):
    bannedUsers = await ctx.guild.bans()
    name, discriminator = member.split("#")

    for ban in bannedUsers:
        user = ban.user

        if (user.name, user.discriminator) == (name, discriminator):
            await ctx.guild.unban(user)
            await ctx.send(f"{user.mention} wurde entbannt.")
            return
unkempt canyonBOT
#

class discord.Embed(*, colour=Embed.Empty, color=Embed.Empty, title=Embed.Empty, type='rich', url=Embed.Empty, description=Embed.Empty, timestamp=None)```
Represents a Discord embed.

len(x) Returns the total size of the embed. Useful for checking if it’s within the 6000 character limit.

bool(b) Returns whether the embed has any data set.

New in version 2.0.

Certain properties return an `EmbedProxy`, a type that acts similar to a regular [`dict`](https://docs.python.org/3/library/stdtypes.html#dict "(in Python v3.9)") except using dotted access, e.g. `embed.author.icon_url`. If the attribute is invalid or empty, then a special sentinel value is returned, [`Embed.Empty`](https://discordpy.readthedocs.io/en/master/api.html#discord.Embed.Empty "discord.Embed.Empty").

For ease of use, all parameters that expect a [`str`](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.9)") are implicitly casted to [`str`](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.9)") for you.
boreal ravine
#

!d discord.abc.Messageable.send

unkempt canyonBOT
#

await send(content=None, *, tts=None, embed=None, embeds=None, file=None, files=None, stickers=None, delete_after=None, nonce=None, allowed_mentions=None, reference=None, mention_author=None, view=None)```
This function is a [*coroutine*](https://docs.python.org/3/library/asyncio-task.html#coroutine).

Sends a message to the destination with the content given.

The content must be a type that can convert to a string through `str(content)`. If the content is set to `None` (the default), then the `embed` parameter must be provided.

To upload a single file, the `file` parameter should be used with a single [`File`](https://discordpy.readthedocs.io/en/master/api.html#discord.File "discord.File") object. To upload multiple files, the `files` parameter should be used with a [`list`](https://docs.python.org/3/library/stdtypes.html#list "(in Python v3.9)") of [`File`](https://discordpy.readthedocs.io/en/master/api.html#discord.File "discord.File") objects. **Specifying both parameters will lead to an exception**.

To upload a single embed, the `embed` parameter should be used with a single [`Embed`](https://discordpy.readthedocs.io/en/master/api.html#discord.Embed "discord.Embed") object. To upload multiple embeds, the `embeds` parameter should be used with a [`list`](https://docs.python.org/3/library/stdtypes.html#list "(in Python v3.9)") of [`Embed`](https://discordpy.readthedocs.io/en/master/api.html#discord.Embed "discord.Embed") objects. **Specifying both parameters will lead to an exception**.
slate swan
#

thx

boreal ravine
slate swan
#

yeah i was looking for the right name for it

river kindle
#

@slate swan so, do you understand the problem?

slate swan
#

Is that the only error your getting?

river kindle
#

nope

slate swan
#

oh?

river kindle
#

yes

slate swan
#

Send full error

boreal ravine
#
Traceback (most recent call last):
  File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/client.py", line 352, in _run_event
    await coro(*args, **kwargs)
  File "/home/runner/bonbons/cogs/events.py", line 13, in on_member_join
    member_role = guild.get_role(880030723908722729)
AttributeError: 'NoneType' object has no attribute 'get_role'
``` why?
slate swan
#

your object is not a discord.Role

tough wagon
#

guild is None

river kindle
#

I also get errors like staticlogin, loginfailure, not autorized etc

slate swan
#

discord.Guild*

boreal ravine
slate swan
#

discord.Guild mb

boreal ravine
tough wagon
river kindle
#

yes

reef shell
#

most probably your bot is not in that guild or your guilds intent is disabled

tough wagon
boreal ravine
tough wagon
boreal ravine
reef shell
tough wagon
#

@boreal ravine add self.bot.wait_until_ready() before defining guild

reef shell
tough wagon
unkempt canyonBOT
#

classmethod none()```
A factory method that creates a [`Intents`](https://discordpy.readthedocs.io/en/master/api.html#discord.Intents "discord.Intents") with everything disabled.
reef shell
tough wagon
#

only this one have guild intents disabled

reef shell
#

?

sullen shoal
#

isnt get_guild coroutine

reef shell
#

no

boreal ravine
gloomy quest
#

for some reason my bot cant ban

boreal ravine
#

shouldnt be there be an error "object was never awaited" if it was a coro?

reef shell
boreal ravine
#

!d discord.ext.commands.Bot.get_guild

unkempt canyonBOT
sullen shoal
slate swan
#

!d discord.Client.get_guild

unkempt canyonBOT
slate swan
#

@boreal ravine oh btw

boreal ravine
sullen shoal
#

wasn't sure

boreal ravine
#

But it wasn't so I said there should've been an error like that

tough wagon
#

@boreal ravine can you just add await self.bot.wait_until_ready() before defining guild?

tough wagon
#

get_guild not need an event, only fetch_guild needs

tough wagon
lament mesa
#

?

tough wagon
#

it cant be not cached

reef shell
#

lol

tough wagon
#

only if you did some very very weird bad shit

lament mesa
#

Why not?

boreal ravine
#

should I run a command before re-joining on my alt to make it cached or something?

reef shell
#

get_guild gets a guild from cache

sullen shoal
tough wagon
reef shell
boreal ravine
#
import discord
from discord.ext import commands

class Events(commands.Cog):
    def __init__(self, bot):

      self.bot = bot

    @commands.Cog.listener()
    async def on_member_join(self, member):
    
      self.bot.wait_until_ready()
      
      guild = self.bot.get_guild(880030618275155998)
      member_role = guild.get_role(880030723908722729)
      no_pfp = guild.get_role(896697171108327475)
    
      channel = guild.get_channel(880387280576061450)

      roles = [member_role]

      if member.avatar.url is None:
        roles.append(no_pfp)
        print(f"{member} joined with no pfp.")

      await member.add_roles(*roles)
      await channel.send(f"{member} joined!")
       
def setup(bot):
  bot.add_cog(Events(bot))
``` heres the full code
slate swan
#

hey i didnt made any help cmd, and i guess its automatically, i want to know that how can i customise it??

lament mesa
boreal ravine
unkempt canyonBOT
#

remove_command(name)```
Remove a [`Command`](https://discordpy.readthedocs.io/en/master/ext/commands/api.html#discord.ext.commands.Command "discord.ext.commands.Command") from the internal list of commands.

This could also be used as a way to remove aliases.
tough wagon
#

awaaait

sullen shoal
boreal ravine
lament mesa
#

Yea

boreal ravine
#

you can use the in-built help command customization thingy

tough wagon
unkempt canyonBOT
#

class discord.ext.commands.HelpCommand(*args, **kwargs)```
The base implementation for help command formatting.

Note

Internally instances of this class are deep copied every time the command itself is invoked to prevent a race condition mentioned in [GH-2123](https://github.com/Rapptz/discord.py/issues/2123).

This means that relying on the state of this class to be the same between command invocations would not work as expected.
boreal ravine
slate swan
#

thx :))

tough wagon
#

@reef shell @sullen shoal @lament mesa
Bot caches guild when it joins it (in any status, to it's cache that can't be cleaned by users)
That's all, if you can imagine some way to not cache it, idk how your brain works)

#

The only way when bot.get_something not works is when bot is not ready and didnt get it's cache, because that i said to do wait_until_ready

sullen shoal
#

oh lemon_surprised

tough wagon
#

ho

reef shell
tough wagon
reef shell
#

I said this, and people are using different forks of dpy and some of the forks have Intents.none() by default

lament mesa
silk goblet
#

how can i dowload pictures posted from other users with a bot and safe them on a ubuntu server?

slate swan
#

what's the endpoint dpy uses when fetching a user

#

nvm found it

serene lynx
#

How to reply message in on_message event discordpy?

visual island
unkempt canyonBOT
#

await reply(content=None, **kwargs)```
This function is a [*coroutine*](https://docs.python.org/3/library/asyncio-task.html#coroutine).

A shortcut method to [`abc.Messageable.send()`](https://discordpy.readthedocs.io/en/master/api.html#discord.abc.Messageable.send "discord.abc.Messageable.send") to reply to the [`Message`](https://discordpy.readthedocs.io/en/master/api.html#discord.Message "discord.Message").

New in version 1.6.
serene lynx
boreal ravine
#

Can someone help me with a command?

#

the command is pretty messy

#

and im making it so that if we react to an emoji it'll delete the message (I have to wait_for thingys I cant get it to work

mossy wyvern
tough wagon
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.9)"). 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.9)") 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.9)") 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**...
misty stream
#
@bot.command()
async def get_members(ctx,role_name):
    role = discord.utils.find(
        lambda r: r.name == role_name, ctx.guild.roles)
        
    for user in ctx.guild.members:
        if role in user.roles:
            await ctx.send(user.mention)

any1 knows how to get 1 random member in the set role

tough wagon
#

@boreal ravine

tough wagon
boreal ravine
#

but I'm doing wait_for for 2 reactions

misty stream
misty stream
#

thanks !

tough wagon
#

return user == message.author and (str(reaction.emoji) == '👍' or str(reaction.emoji) == '😳') @boreal ravine

visual island
tough wagon
#

^^^^^^^^^^^^^^^^^^^^^

boreal ravine
#

meaning?

misty stream
#
@bot.command()
async def get_members(ctx,role_name):
    role = discord.utils.find(
        lambda r: r.name == role_name, ctx.guild.roles)
        
    for user in ctx.guild.members:
        if role in user.roles:
            await ctx.send(random.choice(role.members))

still returns multiple members

visual island
#

use the check or another if statement

tough wagon
slate swan
#

import random

boreal ravine
#

makes sense

misty stream
#

Awesome !!!

tough wagon
#

Aesomew !!!

boreal ravine
#

awseome!!

boreal ravine
mossy wyvern
visual island
# boreal ravine meaning?
r, u = await bot.wait_for("reaction_add", check=...)
if str(r.emoji) == "something":
     await message.delete()
```like this probably
tough wagon
visual island
#

or pass the str(reaction.emoji) == "something" in the check

boreal ravine
mossy wyvern
tough wagon
#

!d discord.Guild.voice_client

unkempt canyonBOT
#

property voice_client: Optional[VoiceProtocol]```
Returns the [`VoiceProtocol`](https://discordpy.readthedocs.io/en/master/api.html#discord.VoiceProtocol "discord.VoiceProtocol") associated with this guild, if any.
visual island
mossy wyvern
visual island
#

pass the emoji you want in the "something"

boreal ravine
#

hm

#

okay

misty stream
#
@bot.command()
async def get_members(ctx,role_name):
    role = discord.utils.find(
        lambda r: r.name == role_name, ctx.guild.roles)
    choice = random.choice(role.members)
    await ctx.send(choice)

this returns the members name with #1234
how do i get their nickname or name

#

sorry still kinda new to python

visual island
unkempt canyonBOT
#

property display_name: str```
Returns the user’s display name.

For regular users this is just their username, but if they have a guild specific nickname then that is returned instead.
misty stream
#

last question verry sorry

guild = bot.get_guild
role = discord.utils.find(lambda r: r.name == 'Vip', guild.roles)

how would i get the guild without ctx cause i want to get the roles of my guild

tough wagon
#

you already have that as I see guild = bot.get_guild but pass there ID of your guild, like guild = bot.get_guild(185012745013)

manic wing
boreal ravine
#

I did ```py
reaction, user = await self.bot.wait_for("reaction_add", timeout=30.0, check=remove)
if str(reaction.emoji) == "❌":
await send.delete()

tough wagon
#

@boreal ravine

@client.event
async def on_message(message):
    # Do Something
    def check(reaction, user):
        return user == message.author and (str(reaction.emoji) == 'emoji_1' or str(reaction.emoji) == 'emoji_2')

    try:
        reaction, user = await client.wait_for('reaction_add', timeout=60.0, check=check)
    except asyncio.TimeoutError:
        # Do Something if 1 minute finished and user didn't press the one of two reactions
    else:
        if str(reaction.emoji) == 'emoji_1':
            # Do Something if user pressed emoji_1
        else:
            # Do Something if user pressed emoji_2```
slate swan
#

bot.get_guild(123)

boreal ravine
#

im making a ✅ and ❌ type of thing

#

I'm not sure that works that way

slate swan
#

how do the high tier music bots work, like hydra for example when it comes to using spotify songs?

misty stream
lilac latch
#
    details = "+".join(location)
    r = requests.get(f"https://timezone.abstractapi.com/v1/current_time/?api_key=&location={details}")
    res = r.json()
    await ctx.send(res)```
#

Someone please help it just returns empty brackets

slate swan
#

what do you enter as location?

lilac latch
tough wagon
#

Moscow

slate swan
#

add a * after ctx

boreal ravine
#

its a full word

lilac latch
#

Yup

slate swan
slate swan
#

maybe that

slate swan
boreal ravine
slate swan
slate swan
#

because it seems like you didnt

lilac latch
lilac latch
slate swan
#

its not in the request you sent?

lilac latch
#

Huh?

slate swan
#

no just wouldve been better to do this when showing code

async def test(ctx, location):
    details = "+".join(location)
    r = requests.get(f"https://timezone.abstractapi.com/v1/current_time/?api_key=&location={details}", headers= {"apikeywhatever": "then change the actual api key"})
    res = json.loads(r.text)
    await ctx.send(res)
#

so we know that you actual do provide the api key

lilac latch
#

I did enter an API key I removed it from the code

slate swan
#

did you place it in a header?

lilac latch
slate swan
#

with a request, it would probably want it sent in a header

lilac latch
#

Not necessarily

slate swan
#

can you send the website link? please

lilac latch
#

1 min

lilac latch
slate swan
#

lemme log in rq

#

This is what their example suggest

import requests response = requests.get("https://timezone.abstractapi.com/v1/current_time/?api_key=key&location=Oxford, United Kingdom") 
print(response.status_code) 
print(response.content)```
slate swan
#

i see

#

did you try res.content.json()

odd pendant
slate swan
#

wored for me

#

worked

odd pendant
#

requests is blocking

lilac latch
odd pendant
#

it's simple

lilac latch
#

Tell me

slate swan
#

hey how can i use this in python?

odd pendant
#
async with client.get('http://python.org') as resp:
    x = await resp.text()```
slate swan
#

ohk

odd pendant
#

thats an example

slate swan
odd pendant
#

look at the documentation

lilac latch
slate swan
slate swan
odd pendant
slate swan
boreal ravine
#

!d discord

lilac latch
odd pendant
#

welcome to programming my friend, you'll need to read docs

#

anyway it's litrally labelled "json request"

slate swan
odd pendant
#
async with session.get('https://api.github.com/events') as resp:
    print(await resp.json())``` not really hard to find
lilac latch
slate swan
slate swan
odd pendant
slate swan
odd pendant
#

aiohttp is elite

slate swan
#

so thanks aswell, you have taught me something

lilac latch
#

WHY WHY WHY

slate swan
lilac latch
#

Guess I need to learn it

slate swan
odd pendant
# lilac latch WHY WHY WHY

lol it's really not hard py async with session.get('https://api.github.com/events') as resp: print(await resp.json()) if you can't use this example for what you need then you should probably learn basic python

slate swan
cinder horizon
#
len(guild.emojis)
```is a thing?
odd pendant
#

yea

#

!d discord.Guild.emojis

unkempt canyonBOT
cinder horizon
serene lynx
#

this since yesterday can't be the cause why huh?

lilac latch
boreal ravine
odd pendant
lilac latch
odd pendant
#

it's pretty much the same as requests, just async

serene lynx
lilac latch
boreal ravine
serene lynx
slate swan
#

Hey guys where do I learn wait_for?

slate swan
slate swan
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.9)"). 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.9)") 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.9)") 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**...
slate swan
#

Ok thx

steep estuary
#

why my slash commands are not showing

#

5 hours done

#

:/

copper hawk
#

explain ?

reef shell
steep estuary
reef shell
#

dpy doesn’t have any slash commands support

steep estuary
#

it have

reef shell
#

no

steep estuary
#

from discord_slash import SlashCommand

#

slash = SlashCommand(bot)

reef shell
#

That's totally not dpy

steep estuary
#

so many peoples told me that it have slash commands buttons and selects

reef shell
steep estuary
#

:/

odd pendant
#

discord_slash is not discord

#

it's a different library

reef shell
steep estuary
#

i know that -_-

reef shell
#

No you don't

steep estuary
reef shell
steep estuary
#

then what is that

reef shell
#

As i said

steep estuary
#

i searched google

reef shell
#

Know your library

steep estuary
#

aaa

reef shell
#

....

steep estuary
#

but i don't know that it have slash commands or not

steep estuary
#

i cannot use two different libraries together ?

reef shell
#

you can use extensions

steep estuary
#

which ?

reef shell
#

like we can use discord.ext.menus which is not a part of the original library

steep estuary
#

i can use slash commands in d.py?

#

somehow?

reef shell
#

no you have to use a fork or any extension (if exists) that supports slash commands

steep estuary
#

ok :(

#

d.py doesn't have anything good ?

#

or just commands

reef shell
steep estuary
#

what is this ?

#

which lib is this?

reef shell
#

idk, that should be known by you

boreal ravine
#

^

reef shell
#

As you are using

steep estuary
boreal ravine
#

how do u not know

steep estuary
boreal ravine
#

what lib your using

boreal ravine
#

say that lmao

steep estuary
reef shell
#

No?

steep estuary
#

i know it is written there

reef shell
#

Can you not read

steep estuary
#

but the code is similar

reef shell
#

The readme

boreal ravine
steep estuary
reef shell
boreal ravine
steep estuary
#

i cannot use fork with it ?

reef shell
#

i think you should better ask in their support server..
i've never heard of this fork

steep estuary
#

:/

#

somebody told me in this channel that d.py have slashcommands and buttons -_-

reef shell
#

I use a fork which have slash cmd support but It's not stable yet

odd pendant
#

just use edpy

reef shell
#

same

#

but fpr buttons and dropdowns you can use dpy v2.0

steep estuary
#

d.py doesn't have anything good?

#

just normal commands :/

reef shell
#

everything so far is it have is good

steep estuary
#

how i can switch :/

tough wagon
#

!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.

hybrid bridge
#

thx

marble pilot
#

I want to get the user and tag of the author. But i get only the name(without the tag #xxxx)

@Bot.command()
async def load(ctx, extension):
    Started_Time = time.time()
    await asyncio.sleep(1)
    Bot.load_extension(f'cogs.{extension}')
    Task_Embed = discord.Embed(title="Task Completed.", description = f"[-] Succesfully loaded {extension}.py", color=discord.Color.blue())
    Task_Embed.add_field(name="More Info", value=f"[-] Command executed by {ctx.author.name}\n[-] Command executed at {date.today()}[-] Command executed within {time.time()-Started_Time} seconds")
    await ctx.send(embed=Task_Embed)```
slate swan
#

ctx.author

#

without name

odd pendant
#

ctx.author.name returns the members username, to get the discriminator use ctx.author.discriminator or str(ctx.author)

unkempt canyonBOT
#

property name```
Equivalent to [`User.name`](https://discordpy.readthedocs.io/en/master/api.html#discord.User.name "discord.User.name")
marble pilot
#

so only ctx.author

boreal ravine
#

no

slate swan
boreal ravine
#

ctx.author.name

marble pilot
#

yeah

boreal ravine
odd pendant
#

str(ctx.author) or {ctx.author.name}#{ctx.author.discriminator}

marble pilot
boreal ravine
#

oh

odd pendant
#

name is only the username

boreal ravine
marble pilot
#

ye

boreal ravine
marble pilot
slate swan
#

if ctx.author didnt work, add str as sir @odd pendant said

slate swan
boreal ravine
tough wagon
#
ctx.author == ctx.author.name + "#" + ctx.author.descriminator

True```
slate swan
marble pilot
#

k works

boreal ravine
#

!e

print(type("Radium8844#2160"))
unkempt canyonBOT
#

@boreal ravine :white_check_mark: Your eval job has completed with return code 0.

<class 'str'>
tough wagon
marble pilot
#

Discord does not add # in the middle of the string that defines the author name

#

and the discriminator

hasty iron
#

hm not documented

tough wagon
#

omfg i didn't say it should work

#

AHHHHHHH

marble pilot
#

I mean this method doesnt work like that

odd pendant
marble pilot
#

ye

#

Ik you want to explain how it works but it doesnt work like that

tough wagon
#

nothing to say

#

just bruh

slate swan
#

The hell happened

tough wagon
#

I should explain it like this?

member: discord.Member
print(str(member) == member.name + "#" + member.descriminator)``` or what?
faint monolith
#

Hi. I deployed my bot into heroku and when I open it's domain, it shows application error. What does it mean? (Bot works correctly)

cinder horizon
#
stickers = str(len(guild.stickers))
```is not a thing?
marble pilot
slate swan
marble pilot
odd pendant
marble pilot
#

doesnt combine the name and discriminator

faint monolith
#

I mean isn't sth wrong with host?

weary gale
#

im here to get help to make a discord bot, is this the right channel?

slate swan
#

it's server-side error

odd pendant
faint monolith
tough wagon
odd pendant
#

it's a web host, nobody should recommend heroku for this purpose

weary gale
#

can somebody help me?

faint monolith
hasty iron
#

just ask

faint monolith
slate swan
weary gale
#

uh, so im stuck. i've installed python 3.10 and im stuck

cinder horizon
odd pendant
slate swan
faint monolith
tough wagon
weary gale
faint monolith
odd pendant
slate swan
marble pilot
#

help channels

slate swan
#

did you make sure you added python to PATH?

cinder horizon
weary gale
weary gale
slate swan
slate swan
faint monolith
odd pendant
#

are you stuck making a script or?

weary gale
#

no im installing it lol

slate swan
weary gale
#

thanks :)

slate swan
#

...Np i guess?

weary gale
#

ok

#

done

slate swan
#

aight

weary gale
#

@slate swan

slate swan
#

open your CMD

weary gale
#

from start? or from a file

slate swan
#

and type pip install discord.py

#

from start

weary gale
#

ok

cinder horizon
slate swan
tough wagon
tough wagon
#

there is info about how to install it

weary gale
#

@slate swan

odd pendant
#

do it

boreal ravine
slate swan
#

its nothing

cinder horizon
slate swan
#

dw

boreal ravine
#

oh

weary gale
slate swan
#

just type pip install --upgrade pip

#

then you're all good to go

weary gale
#

alr yup

slate swan
#

happy coding!

weary gale
#

wait what

#

no idk how to code

slate swan
#

then learn

weary gale
#

LOP

#

Sid9rkodpw

tough wagon
#

!resources

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.

weary gale
#

oh

slate swan
#

coding is fun and useful

#

plus it's a good way to flex on peopple who can't do it

weary gale
#

Lol

#

Could I be able to get my bot working in like less than a day

#

With like 5 commands

tough wagon
#

wdym?

odd pendant
#

you could get a bot working in about 5 seconds

weary gale
#

What

#

If I know nothing, how long do u guys think I could learn to make the bot work

tawdry perch
#

do you know Python?

odd pendant
#
import discord
from discord.ext import commands

bot = commands.Bot(command_prefix="!")

@bot.command(name="ping")
async def command_ping(ctx: commands.Context) -> None:
    await ctx.send("pong")

bot.run("bot token")```
weary gale
#

How long u think it'll take*

slate swan
weary gale
#

I know literally nothing

tawdry perch
weary gale
#

Nothing

tawdry perch
weary gale
#

No coding, scripting

slate swan
#

That's exactly his question

weary gale
#

bruhhhh

tawdry perch
#

You literally have to

slate swan
#

there area shitton of books and videos

tawdry perch
#

discord.py is not a easy lib, if you don't understand Python you will be in a lot "pain"

weary gale
#

So it's gonna take 3 months to learn the thing that will only get me started

odd pendant
#

oh yeah lol i pressed it but i guess my keyboard just wanted to say no

slate swan
#

@weary galei suggest you first start by reading python for dummies

odd pendant
tawdry perch
weary gale
#

Is there no faster way

odd pendant
#

you have to learn

tawdry perch
#

Learning is not fast always

odd pendant
#

some people learn faster than others

slate swan
#

@weary gale read Python for Dummies, learn a few libraries like asyncio, tkinter and OS. Then you will be able learn dpy in no time as well as have a good backround

odd pendant
#

why tkinter

tawdry perch
#

But if you decide to just jump into discord.py, you will not be able to make a proper bot.

tough wagon
odd pendant
#

it's a gui lib lol

slate swan
acoustic marlin
tough wagon
odd pendant
#

i started python with discord bots, no prior python knowledge

slate swan
#

not the OS

weary gale
#

python for dummies

slate swan
acoustic marlin
tough wagon
dapper cobalt
dapper cobalt
acoustic marlin
#

Literally nothing in python is hard if you learn it in a good order and step by step

tough wagon
acoustic marlin
#

python is an extremely easy language but everyone should still start from print("hello world")

slate swan
tough wagon
weary gale
# slate swan yes

could u dm me a link pls? i dont even know which thingys to thingy

dapper cobalt
unkempt canyonBOT
#

@dapper cobalt :white_check_mark: Your eval job has completed with return code 0.

Hello, world!
weary gale
#

thx

dapper cobalt
lament mesa
slate swan
#

no

dapper cobalt
slate swan
#

absolutely not

#

m-m

tough wagon
#

😦 my bad python huh

tawdry perch
lament mesa
lament mesa
tawdry perch
#

sure thing

tough wagon
dapper cobalt
slate swan
#

oh gwad

dapper cobalt
#

I think we're going pretty off-topic tbh.

dapper cobalt
acoustic marlin
#

You have ruined python

dapper cobalt
#

Then don't check #bot-commands.

tough wagon
#

He hates you

acoustic marlin
#

I am crying on the inside

lone lichen
#

It’ s so funny

dapper cobalt
#

Make a bot in CSS and I will pay you $500.

bright palm
unkempt canyonBOT
#

@bright palm :white_check_mark: Your eval job has completed with return code 0.

Hello World!
slate swan
#

!e

class Cheese():
    def __init__(self, Aamount):
        self.amount = Aamount
        self.holes = Aamount-1

    def getFinalAmount(self):
        return self.amount - self.holes

#prints if less cheese is equal to more cheese
print(Cheese(1).getFinalAmount() == Cheese(4).getFinalAmount())
#

I just realized I messed up the logic

#

meh

tough wagon
acoustic marlin
slate swan
#

Well you can execute external JS code from CSS, but then it's no longer a pure CSS bot

brave vessel
#

In everyone's eyes, what would be your favorite third-party discord py slash command libraries

floral jacinth
#

hello guys, i have a channel that is cloned when someone enter and it is moved on other category based on member's role

there's some command to set channel permission as the category the channel is moved in?

brave vessel
#

that still works well with dpy

slate swan
#

discord-py-interactions

unkempt canyonBOT
#

await edit(*, reason=None, **options)```
This function is a [*coroutine*](https://docs.python.org/3/library/asyncio-task.html#coroutine).

Edits the channel.

You must have the [`manage_channels`](https://discordpy.readthedocs.io/en/master/api.html#discord.Permissions.manage_channels "discord.Permissions.manage_channels") permission to use this.

Changed in version 1.3: The `overwrites` keyword-only parameter was added.

Changed in version 1.4: The `type` keyword-only parameter was added.

Changed in version 2.0: Edits are no longer in-place, the newly edited channel is returned instead.
tough wagon
#

there is sync_permissions attr

#

set it to True

weary gale
#

how do i get to like the editor from here

#

is there a command?

pliant gulch
#

Depends on your IDE

#

If your using vsc should be vsc .

#

If your using nvim should be nvim .

weary gale
#

@pliant gulch ^

#

i have it tho

pliant gulch
#

Not sure then, the only thing I use now is nvim

#

Maybe you don't have it to path or whatever

weary gale
#

do i need to add anything to the file i opened cmd from?

pliant gulch
floral jacinth
# tough wagon there is sync_permissions attr

i have
new_channel = await after.channel.clone(name=f'Dungeon di {member.name}') await new_channel.edit(category=categoria) await member.move_to(new_channel)

should i set like

       ``` new_channel = await after.channel.clone(name=f'Dungeon di {member.name}')
        await new_channel.edit(category=categoria, sync_permissions = True)
        await member.move_to(new_channel)```

or

            new_channel = await after.channel.clone(name=f'Dungeon di {member.name}')
            await new_channel.edit(category=categoria)
            await member.move_to(new_channel)
            await new_channel.edit(sync_permissions = True)```
weary gale
#

thanku!

odd walrus
odd walrus
#

tried with new app, regen nthing works

floral jacinth
slate swan
#

how do I make my discord bot send a dm but what to say and the userid will be provided by a webhook

unkempt canyonBOT
#

await send(content=None, *, tts=None, embed=None, embeds=None, file=None, files=None, stickers=None, delete_after=None, nonce=None, allowed_mentions=None, reference=None, mention_author=None, view=None)```
This function is a [*coroutine*](https://docs.python.org/3/library/asyncio-task.html#coroutine).

Sends a message to the destination with the content given.

The content must be a type that can convert to a string through `str(content)`. If the content is set to `None` (the default), then the `embed` parameter must be provided.

To upload a single file, the `file` parameter should be used with a single [`File`](https://discordpy.readthedocs.io/en/master/api.html#discord.File "discord.File") object. To upload multiple files, the `files` parameter should be used with a [`list`](https://docs.python.org/3/library/stdtypes.html#list "(in Python v3.9)") of [`File`](https://discordpy.readthedocs.io/en/master/api.html#discord.File "discord.File") objects. **Specifying both parameters will lead to an exception**.

To upload a single embed, the `embed` parameter should be used with a single [`Embed`](https://discordpy.readthedocs.io/en/master/api.html#discord.Embed "discord.Embed") object. To upload multiple embeds, the `embeds` parameter should be used with a [`list`](https://docs.python.org/3/library/stdtypes.html#list "(in Python v3.9)") of [`Embed`](https://discordpy.readthedocs.io/en/master/api.html#discord.Embed "discord.Embed") objects. **Specifying both parameters will lead to an exception**.
slate swan
tough wagon
#

!d discord.Webhook

unkempt canyonBOT
#

class discord.Webhook```
Represents an asynchronous Discord webhook.

Webhooks are a form to send messages to channels in Discord without a bot user or authentication.

There are two main ways to use Webhooks. The first is through the ones received by the library such as [`Guild.webhooks()`](https://discordpy.readthedocs.io/en/master/api.html#discord.Guild.webhooks "discord.Guild.webhooks") and [`TextChannel.webhooks()`](https://discordpy.readthedocs.io/en/master/api.html#discord.TextChannel.webhooks "discord.TextChannel.webhooks"). The ones received by the library will automatically be bound using the library’s internal HTTP session.

The second form involves creating a webhook object manually using the [`from_url()`](https://discordpy.readthedocs.io/en/master/api.html#discord.Webhook.from_url "discord.Webhook.from_url") or [`partial()`](https://discordpy.readthedocs.io/en/master/api.html#discord.Webhook.partial "discord.Webhook.partial") classmethods.

For example, creating a webhook from a URL and using [aiohttp](https://docs.aiohttp.org/en/stable/index.html "(in aiohttp v3.7)"):
slate swan
#

the webhook will say the id with <@> in the channel and I want the bot to see the ID and than send DM to the person

weary gale
#

how do i run my file? from vsc

#

i must be dumb

tough wagon
#

open console in it

#

and type py file_name.py

weary gale
#

console

#

is that like terminal?

tough wagon
#

terminal yes

weary gale
#

ok

fair wave
#

I have a discord bot that depends on the Quart API that i have written myself. I'm running the API in a different thread but the problem is that the bot became very slow. It takes at least 20sec for the bot to respond to the command

weary gale
fair wave
#

Does anyone have suggestions for improving the performance ?

tough wagon
fair wave
hasty iron
#

it will run it in the background

weary gale
#

oh

#

im stupid

fair wave
#

lol

weary gale
#

still comes up with an error

tough wagon
#

do python file_name.py and replace file_name with your file name @weary gale

weary gale
#

yeah i did

tough wagon
#

show me what you did

weary gale
hasty iron
#

do you know python

#

you seem like you just downloaded it

weary gale
#

i did

hasty iron
#

and dont know how to use it

tough wagon
#

he did

tough wagon
weary gale
#

uh

tough wagon
#

like this

tawdry perch
hasty iron
#

!resources

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.

tough wagon
weary gale
#

im trying to follow a video

tawdry perch
#

videos are most likely outdated and don't teach

hasty iron
#

the point is, it's super annoying to have to help someone with zero knowledge

#

please learn python

tough wagon
#

xD

tawdry perch
#

you do a favor for yourself as well

weary gale
#

does this look outdated

tough wagon
#

yes

weary gale
#

bruh

tawdry perch
#

you should use cogs (recommended)

tough wagon
#

client, =, no cogs

weary gale
#

do i replace that with commands

weary gale
#

im very confuse

fair wave
#

When i do it like this the API is only up for like 5 seconds after that it doesn't respond

lament mesa
# weary gale

and commands.bot is a module, it should be commands.Bot

tough wagon
#

@weary gale just an example of something not outdated

weary gale
#

oh

tawdry perch
weary gale
#

ok

slate swan
tough wagon
slate swan
#

ohhh ok

#

i switched libs cuz of the api changes

tawdry perch
#

is there any critical changes yet? (in API)

slate swan
#

they will all take effect in april 2022

#

so you have time to switch over

tawdry perch
#

well I'm the only user of the bot so I wait till a good wrapper.

slate swan
#

i personally use pycord

#

its jus a fork of d.py

final iron
#

It's only for verified bots though

slate swan
#

yeah

weary gale
slate swan
#

but still, my bot in 80+ servers rn so its kinda useful

weary gale
slate swan
#

main bot is in 18k

tawdry perch
# weary gale

that's just a part of tutorial, yes you have to do that as well. But read the tutorial with time

weary gale
#

oh i already have that

#

ok

tawdry perch
#

thx

slate swan
# weary gale
import discord
from discord.ext import commands
from pathlib import Path
import json

cwd = Path(__file__).parents[0]
cwd = str(cwd)
print(f'{cwd}')

secret_file = json.load(open(cwd+'/config/config.json'))

bot = commands.Bot(command_prefix = '!', intents = discord.Intents.all())

bot.config_token = secret_file['TOKEN']

@bot.event
async def on_ready():
     print('Bot Is Now Ready')


bot.run(bot.config_token)```
#

basic bot using a secret file to hide things such as a db key and token

unkempt canyonBOT
#

os.getcwd()```
Return a string representing the current working directory.
slate swan
#

oh damn i didnt know that existed lmao

weary gale
#

whats that

slate swan
#

a basic main file for a bot

#

...

weary gale
#

so its like

#

a prebuilt bot

tough wagon
fair wave
#

Can somebody please help me out with running a Quart server in the background of a discord bot

weary gale
#

how can i actually run the command

slate swan
weary gale
#

how do i run the file or commands

#

that turn the bot online

tough wagon
#

python file_name.py

#

file_name replace with file name

#

that you want to run

weary gale
#

if my file name was nissan bot

#

what'd it be

tough wagon
#

with space?

weary gale
#

python nissan_bot.py

slate swan
weary gale
#

yes with space

tough wagon
slate swan
tough wagon
#

in quotes

slate swan
#

^

weary gale
#

i do that in terminal?

slate swan
#

yeah

tough wagon
#

yes

weary gale
#

in quotes

slate swan
#

in the directory your file is in

#

yes

weary gale
#

didnt work..

tough wagon
#

show what you executed

#

in terminal

slate swan
#

whats the error msg u get

weary gale
slate swan
#

that should work mate

tough wagon
#

IN QUOTES

weary gale
#

no such file or

slate swan
#

IN QUOTES

weary gale
#

OH

slate swan
#

just copy and paste what i said facepalm

tough wagon
#

python "nissan bot.py"

slate swan
#

^

#

my computer lagging rn lemme restart it

tough wagon
#

ok

weary gale
fair wave
#

Is there someone with experience of using Quart + Discord.py ?

slate swan
#

With the file in it

weary gale
#

uh

tough wagon
#

@weary gale send me a screenshot of this panel

weary gale
slate swan
#

Damn what r u coding lmao @tough wagon

weary gale
#

this?

tough wagon
slate swan
slate swan
fair wave
tough wagon
weary gale
slate swan
#

Laravel's structure is much more complex KEKW

weary gale
#

no play button

tough wagon
#

im doing that to know what am I working with

#

@weary gale open the terminal and send a screenshot of all your screen

slate swan
#

@weary gale

slate swan
tawdry perch
# weary gale

you use bot.run even you did client = commands.Bot().

slate swan
#

there should be a playbutton up there that is green

autumn trellis
#

Can someone help me out
I try use to use role name for command access and how to make error for it when user don't have a require role sorry for bad grammar

slate swan
#

ive never used quart

slate swan
weary gale
slate swan
#

ok in there

weary gale
#

what

slate swan
#

type python "nissan bot.py"

#

in that terminal it should work

#

WAIT

tough wagon
#

@weary gale first do client.run(token), not bot.run(token), second do python bot.py in terminal

slate swan
#

IK WHY do python bot.py

#

not nissan bot since thats not your FILE name

tough wagon
slate swan
#

lmaooo

#

And consider removing spaces in file names

fair wave
slate swan
weary gale
#

hm

slate swan
#

LMAOOOO why you pay for winrar 😭

slate swan
#

It's much more popular and probably has a bigger community behind it

weary gale
slate swan
slate swan
weary gale
#

?

tough wagon
slate swan
weary gale
#

doesnt work

slate swan
#

show error

tough wagon
slate swan
#

...

weary gale
#

OH

autumn trellis
#

Sry

fair wave
weary gale
#

wait a min i might be able to fix on my own

tough wagon
#

lol ok

slate swan
#

lol k

slate swan
tough wagon
#

!pypi quart

unkempt canyonBOT
#

A Python ASGI web microframework with the same API as Flask

weary gale
#

I DID

#

I DID IT!!!

#

its online!

tough wagon
#

congratulations xd

weary gale
#

now i need to do everything else

tawdry perch
#

now use cogs

weary gale
#

whats that

slate swan
#

These are cogs

tough wagon
tawdry perch
#

Makes sense.

tough wagon
#

i used them after 1 year i started)

tawdry perch
#

@weary gale did you read the tutorial I linked?

fair wave
#

At first i tried this

tawdry perch
fair wave
weary gale
#

still reading tho

fair wave
#

But this absolutely killed the performance of my bot

slate swan
#

This is not how Flask's async function works XD