#discord-bots

1 messages · Page 915 of 1

hushed galleon
#

its better to lock your dependencies to specific versions in case you decide to reinstall them and one of the packages had a breaking update

#

also why is asyncio in that list?

slate swan
flat solstice
#

I was thinking about making a base class for all of my cogs as the majority of them are/will-be inheriting from both discord.app_commands.Group and discord.ext.commands.Cog, I think making a base class which sub classes both of these and then sub classing this new class might be a better way to go about it instaed of subclassing both every time. If I did sub class both of those I would only need the super().__init__() in this base class right, not in all of the others? ```py
class CogBase(app_commands.Group, commands.Cog):
def init(self, bot):
super().init()
self.bot = bot

async def setup(bot):
await bot.add_cog(Owner_Cog(bot), guild=Object(id=default_guild))``` and I would still need to do the setup func for this new class in each file right?

#

next question, I think that is file is starting to get quite chunky and will only get more so, so I was thinking about splitting it out into separate files, one for each class but I'm torn on whether I should make more files in the same utils directory or if I should make a sub folder called helpers (so utils/helpers) and then make each file in there hold one of the classes. What do you think? https://github.com/SnowyJaguar1034/Zupie/blob/master/bot/utils/helpers.py

slate swan
#

Hello I’m using discord.ext how do I make it so bot doesn’t response to messages in Dm

slate swan
#

or just use the @guild_only decorator

#
@commands.guild_only()```
somber sky
#

where do i add a color to this, it doesnt work when i try putting it

slim ibex
#

Wdym color

#

the color on the side of the embed?

flat solstice
slim ibex
#

you can use hex codes

flat solstice
outer parcel
#

Guys how can i keep my code running consistently on Visual Studio

manic wing
#

keep your computer online brainmon

outer parcel
#

: (

#

file : discord.File

#

represents images i tink

slim ibex
#

i don't understand these nested try except blocks

unkempt canyonBOT
#

Hey @delicate epoch! I noticed you posted a seemingly valid Discord API token in your message and have removed your message. This means that your token has been compromised. Please change your token immediately at: https://discordapp.com/developers/applications/me

Feel free to re-post it with the token removed. If you believe this was a mistake, please let us know!

manic wing
#

oi post it again i didnt see it

slim ibex
#

wait wait thats confusing as fuck

#

its ok if your english is not the best, but try to explain it the best you can

rocky trench
#

What's ur native language?

#

Send it in German, I'll try to translate

#

Why do you store it in a dictionary tho?

#

U could just send the attachment

#

Do you want to store it tho? Create some kind of logging message with the channel it was sent in and the attachment

#

Its just fetching a channel and sending info in it

worthy tree
#

guys i have an issue so my bot currently only sends images and messages at only one time however i want it sent all at once messages and images included how would i do this please help.

#

also when i post an image it posts it everywhere

sick birch
#

Perhaps you should read up the documentation on getting started with discord.py?

tough trellis
#

how would i make it work for the lowercase version also

slate swan
worthy tree
#

properly that is

sick birch
#

That's because there's like at least 10 things wrong there, no offense

worthy tree
#

also i removed the codes and everything

worthy tree
#

if thats what you were referung to

sick birch
#
  1. Don't nest on_message
  2. Move your client instance out of a function
  3. No need for payloads, discord.py has native methods for things like sending messages, channel.send() for example
  4. Move client.run() outside of your function as well, it should be in the main scope
  5. time.sleep is blocking use asyncio.sleep() instead
tough trellis
#

aka user

slate swan
tough trellis
#

user.lower()?

slate swan
#

can i see the functions params im not sure what you mean/want?

tough trellis
#

so

#

user: discord.Member yk

slate swan
#

ah

#

argument naming, and the member obj takes an id or mention

worthy tree
#

how would i send the messages

#

do i just send the post request

sick birch
#
client = discord.Client(...)

@client.event
async def on_message(message: discord.Message):
  await message.channel.send("You sent a message!")

client.run(...)
sick birch
somber sky
#

how do i make it where when you say a role name it sends the list,

pliant gulch
#

It will only be called after the client is no longer running

worthy tree
pliant gulch
#

This causes some issues with what you are trying to do, but also client.event won't register at run time here, but only when retrieve_messages is called

worthy tree
#

the message that is

sick birch
#

Do you want the message to be sent to the message that the original message was sent in?

worthy tree
#

no to another chanel

#

but i want it grabbed

#

so basically like a relay

sick birch
#

You can do

client.get_channel(id)

to get a channel

worthy tree
#

somat like this ?

#

IndentationError: unindent does not match any outer indentation level

#

gave me this error

manic wing
#

uhh

worthy tree
# manic wing uhh

would you know how to maybe fix the bot just need it to grab messages and relay to other chanels

manic wing
#

im pretty sure andy told you the answer above

#

!indents and this

unkempt canyonBOT
#

Indentation

Indentation is leading whitespace (spaces and tabs) at the beginning of a line of code. In the case of Python, they are used to determine the grouping of statements.

Spaces should be preferred over tabs. To be clear, this is in reference to the character itself, not the keys on a keyboard. Your editor/IDE should be configured to insert spaces when the TAB key is pressed. The amount of spaces should be a multiple of 4, except optionally in the case of continuation lines.

Example

def foo():
    bar = 'baz'  # indented one level
    if bar == 'baz':
        print('ham')  # indented two levels
    return bar  # indented one level

The first line is not indented. The next two lines are indented to be inside of the function definition. They will only run when the function is called. The fourth line is indented to be inside the if statement, and will only run if the if statement evaluates to True. The fifth and last line is like the 2nd and 3rd and will always run when the function is called. It effectively closes the if statement above as no more lines can be inside the if statement below that line.

Indentation is used after:
1. Compound statements (eg. if, while, for, try, with, def, class, and their counterparts)
2. Continuation lines

More Info
1. Indentation style guide
2. Tabs or Spaces?
3. Official docs on indentation

sick birch
lusty sky
#
@client.event
async def on_command_error(ctx, error):
    embed=discord.Embed(timestamp = datetime.datetime.utcnow(),title='**You do not have the permission(s) to run this command.**')
    embed.set_footer(text = ctx.author.name, icon_url = ctx.author.avatar_url)
    await ctx.send(embed=embed)
    if isinstance(error, commands.MissingPermissions):
        await ctx.send(embed=embed)("You do not have the permission(s) to run this command.")
    else:
        raise error```
How do I make the embed cleaner
manic wing
#

ctx.message.created_at returns the datetime object anyway

worthy tree
lusty sky
#

nvm fixed it

#

Thanks

slate swan
#

So i want to have a member be able to close a ticket when they finish chatting with a mod/admin but before i run this code i want to make sure it's right before i get rate limit

@client.command(pass_context=True)
async def ticket(ctx):
    guild = ctx.guild
    embed = discord.Embed(title = 'Ticket system',description = 'React 📩 to make a ticket.',color = 0)
    embed.set_footer(text="ticket system")
    msg = await ctx.send(embed=embed)
    await msg.add_reaction("📩")
    def check(reaction, user):
      return str(reaction) == '📩' and ctx.author == user
    await client.wait_for("reaction_add", check=check)
    ticket = await guild.create_text_channel(name=f'ticket - {ctx.author}')
    await ticket.set_permissions(ctx.guild.default_role, send_messages=False, read_messages=False)
    await ticket.set_permissions(ctx.author, send_messages=True, read_messages=True, add_reactions=True, embed_links=True, attach_files=True, read_message_history=True, external_emojis=True)
    channel = client.get_channel(ctx.channel_id)
    if not channel:
        channel = await client.fetch_channel(ctx.channel_id)
    if channel.name == f"ticket {ctx.author}":
        emoji = ctx.emoji.name
        if emoji == "❌":
            await channel.delete()
#

You are not going to get ratelimited to the point where you can't make any calls to the api if you test a command like that one.

#

No i have many client.event()

#

I already been rate limited 5 - 7 times

pliant gulch
slate swan
#

Yes

#

I don't have a good laptop to run VScode for python or C#

pliant gulch
#

That would be your issue, not the events. repl.it shares IPs amongst it's servers, so this means if someone using the same IP given to you is RATELIMITED, you in return are ratelimited as well

#

As, discord ratelimits are based by IP

slate swan
#

Oh okay

pliant gulch
#

The most consistent solution here is to probably find a different hosting platform

#

Some others may suggest workarounds, but they are workarounds

slate swan
#

ah well the rate limits are that big of a problem for me. It gives me time to look over my code to make sure I didn't mess up any syntax

pliant gulch
#

Alright, good luck

slate swan
#

Thanks and you too

#

I do that when i can't figure out something so yeah

#

Stackoverflow is my first stop when im stuck

#

I didn't, I have changed it up on my end

#

yeah?

pliant gulch
#

pass_context has been pretty much deprecated for 5 or so years now

#

It's no longer required

slate swan
#

I'm mainly looking right here

    em = discord.Embed(title = 'Ticket system',description = 'React 📪 to close a ticket.',color = 0)
    em.set_footer(text="ticket system")
    msg2 = await ctx.send(embed=embed)
    await msg2.add_reaction("📪")
    def check(reaction, user):
      return str(reaction) == '📪' and ctx.author == user
    await client.wait_for("reaction_add", check=check)
    ticket = client.get_channel(ctx.channel_id)
    if not ticket:
        ticket = await client.fetch_channel(ctx.channel_id)
    if ticket.name == f"ticket {ctx.author}":
        emoji = ctx.emoji.name
        if emoji == "📪":
            await ticket.delete()
pliant gulch
#

ctx.emoji.name?

#

I'm almost 100% sure that Context has no emoji attribute

manic wing
#

it doesnt

slate swan
#

nvm i figured it out

lusty sky
#
if isinstance(error, commands.MissingPermissions):```
does anyone know why this keeps running if someone writes a command incorrect?
#

Its only meant to run if they don't have permission to run a command

slate swan
#

do you have the permissions set in the code?

slate swan
#

!d discord.ext.commands.MissingPermissions

unkempt canyonBOT
#

exception discord.ext.commands.MissingPermissions(missing_permissions, *args)```
Exception raised when the command invoker lacks permissions to run a command.

This inherits from [`CheckFailure`](https://discordpy.readthedocs.io/en/master/ext/commands/api.html#discord.ext.commands.CheckFailure "discord.ext.commands.CheckFailure")
slate swan
#

That needs you to implement the has_permissions decorator on the command too, make sure you added it

swift monolith
#

in my code i have bot.commands later and then this never works

@client.event
async def on_message(message):
    username=str(message.author).split("#")[0]
    user_message=str(message.content)
    channel=str(message.channel.name)
    print(f"{user_message}:{username} ({channel})")
    if message.author==client.user:
        return
    if (client.user.mention in user_message) or (f"<@!{client.user.id}>" in user_message):
        await message.channel.send(f"<@{message.author.id}> Pinging me does not do anything.🤣🤣\nType ""mp.help"" for more commands.")
#

and is@bot.event a thing

lusty sky
#

yes bot.event is a thing

slate swan
slate swan
swift monolith
#

it says client.event

#

or is it the same

slate swan
#

bro

#

client is your Bot instance

swift monolith
#
client=discord.Client()
bot = commands.Bot(command_prefix= ["mp." ,"Mp." ,"mP." ,"MP."], case_insensitive=True)
slate swan
#

.event deco is bound to a Bot class instance which in your code its named client its just class instance naming???

slim ibex
#

...

slate swan
#

hi bindspithink

slim ibex
#

👋

lusty sky
#

will discord take down your bot for using youtube-dl in it for music

#

like if someone reports it

#

or is it up to youtube themselves to take action

slate swan
#

i mean its breaking yt tos which discord says if you break a platforms tos in their platform it will break their own tos so probably

lusty sky
#

oh ok

slim ibex
#

!ytdl

unkempt canyonBOT
#

Per Python Discord's Rule 5, we are unable to assist with questions related to youtube-dl, pytube, or other YouTube video downloaders, as their usage violates YouTube's Terms of Service.

For reference, this usage is covered by the following clauses in YouTube's TOS, as of 2021-03-17:

The following restrictions apply to your use of the Service. You are not allowed to:

1. access, reproduce, download, distribute, transmit, broadcast, display, sell, license, alter, modify or otherwise use any part of the Service or any Content except: (a) as specifically permitted by the Service;  (b) with prior written permission from YouTube and, if applicable, the respective rights holders; or (c) as permitted by applicable law;

3. access the Service using any automated means (such as robots, botnets or scrapers) except: (a) in the case of public search engines, in accordance with YouTube’s robots.txt file; (b) with YouTube’s prior written permission; or (c) as permitted by applicable law;

9. use the Service to view or listen to Content other than for personal, non-commercial use (for example, you may not publicly screen videos or stream music from the Service)
swift monolith
#
AttributeError: 'Message' object has no attribute 'send'```

i dont understand this
slim ibex
#

something is off with your ctx prolly

slate swan
slate swan
final iron
#

🗿

slim ibex
#

🗿

slate swan
swift monolith
slate swan
inner epoch
slate swan
#

its all preference

#

but pycord is kinda bad tbh its src code is just horrible

swift monolith
#

is there a way i can make a command called "random" without the random module interfering with the function

inner epoch
slate swan
inner epoch
slate swan
final iron
slate swan
#

UpperWord is for classes

inner epoch
inner epoch
slate swan
#

!pypi disnake | but you should main imo

unkempt canyonBOT
slate swan
#

but tbh i would stay in disnake because at this point i dont trust Danny too much

final iron
#

Use main

#

Use disnake

#

Okimii make up your mind

slate swan
#

its all personal preference bro

#

im giving suggestions

inner epoch
final iron
#

So make up your mind

slate swan
slate swan
inner epoch
slate swan
inner epoch
quick gust
#

there will be the 2.0 breaking changes when u update from 1.7.3 to disnake

slate swan
#

code blocks

#

in an embed would look cleaner

#

and it should be the default code block

inner epoch
somber sky
#

what does this mean

slate swan
unkempt canyonBOT
#

@slate swan :x: Your eval job has completed with return code 1.

001 | Traceback (most recent call last):
002 |   File "<string>", line 1, in <module>
003 | IndexError: string index out of range
slate swan
#

only 3 elements which their positions are 012 and youre trying to index the one in position 5 which their is no 6th element

somber sky
#

huh

supple thorn
#

I'm confused on how you could be confused by that explaination

slate swan
supple crescent
#

how would i make this react to the bots msg not the one u send ?

reaction = "👍"

@bot.command(name = 'order')
async def order(ctx: commands.Context, *, echo: str = "```oops! make sure you say something! EX: !order [example]```") -> None:
    await ctx.send(echo)
    await ctx.message.add_reaction(emoji=reaction)
#

oops i have ``` in the middle

#

u get the point tho 🤷‍♂️

#

cheers 😄

slate swan
#

make it a one linerAG_ChikaStunned

#

Why would someone do that 😔

slate swan
#

Not everyone likes making things complicated, and this method is easier if you trying to make checks or something

#
await (await ctx.send()).add_reaction()

hehe

supple crescent
#

not a critical error but: await client.send_message(channel, '{} has added {} to the message: {}'.format(user.name))
AttributeError: module 'http.client' has no attribute 'send_message'

slate swan
#

Outdated methods

supple crescent
#

wait thats not bc of ur code nvm

supple crescent
slate swan
#

wrong teacher then, learn from the docs

#

!d discord

unkempt canyonBOT
#

In order to work with the library and the Discord API in general, we must first create a Discord Bot account.

Creating a Bot account is a pretty straightforward process.

supple crescent
#

i got it tysm <3

slate swan
#

in saving a few bytes yes in readability ha no

#

but people always say its not readable when it isangry

#

add an actual message to it and you will understand

slate swan
#

Class name bitch

slate swan
somber sky
slate swan
slate swan
#

Context is the class, not the argument name

slate swan
#

ctx is the name most users use as an instance of the context class so use the argumentangry

somber sky
slate swan
slate swan
slate swan
slate swan
#

(nvm that, it's common here)

#

worlworksonmymachine

#

If you're looking for a serious chat, you're at the wrong place 🤡

slate swan
#

I wanted to use hata but the docs are making me hate it

#
supple crescent
#

is there smtn that can detect if a user reacts to the reaction?

#

ill take a look, thanks

slate swan
#

use some markdown which suits your usage

supple crescent
#

i gotta use embeds lol im still using ```

slate swan
#

Like codeblocks

#

its something like a console?

#

bro sarthak you blind

#

make a new line

#
python3 main.py
# your markdown
$python3 - main.py
# what I'm asking to do
#

oh

#

use bash or other type of markdowns

#

Which are actually meant for terminal

#

and not cmdAG_ChikaStunned

#

KEKW idk what cmd windows use

#

isn't it like a completely plain console

slate swan
slate swan
#

GoodMorning kali terminal is cool

#

yes i agree

#

and you should have a footer of the file thats being used and a avatar of the user who requested the terminal

#

sorry i ment avatar*

#

lol

#

what is the issue here

supple crescent
#

how would i make it so the bot doesnt set off the reaction reaction?

#

@bot.command(name = 'order')
async def order(ctx: commands.Context, *, echo: str = "oops! make sure you say something! EX: !order [example]") -> None:
msg = await ctx.send(echo)
await msg.add_reaction("👍")
await msg.add_reaction("👎")
if str(reaction) == "👍":
await ctx.send("u reacted with 👍 ")
if str(reaction) == "👎":
await ctx.send("u reacted with 👎 ")

#

god this code is a mess when u put it into discord

slate swan
#

!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**...
hazy oxide
#

When I define channel as nextcord.TextChannel in nextcord slash command, I got this error. Can someone help?

NotImplementedError: Type "class <'nextcord.channel.TextChannel'>" isn't a supported typing for Application Commands 
supple crescent
slate swan
supple crescent
#

@slate swan im reading the doc, if the bot is making the msg, and being the first one to reatct, wont it set itself off?

#

i might be wring tho

supple crescent
# slate swan pardon?

the bot sends the message and the bot is the onw that reacts first, so, wouldnt the " await client.wait_for('reaction_add' " get set off by the bot

inner epoch
#

Umm how can I make a private channel with the bot which is only accessible by staff and certain role?

supple crescent
inner epoch
slate swan
supple crescent
# inner epoch Aye for sure!!

@bot.command(name="start")
async def start(ctx):
guild = ctx.guild
admin_role = guild.get_role(make this ur admin id)

overwrites = {
    guild.default_role: discord.PermissionOverwrite(view_channel=False),
    ctx.author: discord.PermissionOverwrite(view_channel=True),
    admin_role: discord.PermissionOverwrite(view_channel=True),
    guild.me: discord.PermissionOverwrite(view_channel=True)
}
slate swan
#

how to execute a python script automatically after 2 mins in replit

inner epoch
supple crescent
supple crescent
slate swan
quick gust
#

it's not commands

#

!d discord.ext.tasks.loop

unkempt canyonBOT
#

discord.ext.tasks.loop(*, seconds=..., minutes=..., hours=..., time=..., count=None, reconnect=True)```
A decorator that schedules a task in the background for you with optional reconnect logic. The decorator returns a [`Loop`](https://discordpy.readthedocs.io/en/master/ext/tasks/index.html#discord.ext.tasks.Loop "discord.ext.tasks.Loop").
slate swan
#

forgot its tasks

quick gust
#

i saw lol

#

right

slate swan
#

actually it is two files

#

trade_msg.py

#

cogs then

#

i want to run trade_msg.py every 120 seconds

#

a file?!?!?

#

function*

#

lol

#

same

#

its not an actual discord bot

#

it is a discord account but bot too

#

ye

quick gust
#

against ToS lol

slate swan
#

oh no

slate swan
#

automated accounts are against tos

supple crescent
#

mf makin spambots 🗿

slate swan
#

ty for info

supple crescent
#

thats not agagisnt tos right?

slate swan
supple crescent
slate swan
slate swan
#

kk

supple crescent
slate swan
#

how

#

depends

supple crescent
#

!order does this work

#

wrong server oops

slate swan
#

it probably depends on which endpoint and your logs of each request

inland crest
#

hey guys how to fix this error

buoyant quail
#

what is client?

slate swan
buoyant quail
#

you initialized bot

inland crest
#

thanks

supple crescent
inland crest
#

idk what im doing in my sleep

supple crescent
#

!paste

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.

inland crest
#

yes.... in my bot it was client... but while going for a rewrite i opted for this

#

yes thanks........ I just am used to client.... I forgot.......... and you'll helped me thanks

#

yes it is....... but time saved

#

send an ss better

#

error is hard to read with txt

slate swan
#

it is not dm advertising so i think it is good

#

🤔

#

self bots arent good no matter what they do lol

#

lol

supple crescent
slate swan
#

k

supple crescent
#

and yes thats my name idgaf

inland crest
#

hey whats sfm?

supple crescent
#

i make pfps

inland crest
#

uhh....... ill google it

inland crest
inland crest
supple crescent
supple crescent
echo wasp
#

hello, i asked a question in the d.py server and was wondering if i shoud send it here aswell

buoyant quail
#

if you want it to be message object

#

you can only make it like message = ctx.message

supple crescent
#

fuck hold on

#

(message, ctx: commands.Context, *, echo: str = "oops! make sure you say something! EX: !order [example]") -> None:
@buoyant quail

buoyant quail
#

delete message here

#

ctx is first

supple crescent
#

k'

slate swan
#

ctx is a positional argument which its position is always the first

supple crescent
#

so msg can just go behind "example}"

slate swan
#

but if its in a method ofc it will be the second

slate swan
supple crescent
#

apparently not: discord.ext.commands.errors.CommandInvokeError: Command raised an exception: TypeError: order() missing 1 required keyword-only argument: 'message

supple crescent
slate swan
supple crescent
slate swan
echo wasp
#

i get what is shows as 1 in the picture sent in the discord channel

supple crescent
slate swan
#

you mean it gets saved as the format and not the actual values?

echo wasp
#

and the message need to be sent as a f string

slate swan
#

im so confused...

#

have the before text outside of the codeblock

#

the "Terminal" text

#

and indents are a bit off

supple crescent
#

ok, any way i can add qwargs farther on in the string, rather than in the start? idk if im asking this right

echo wasp
torn sail
slate swan
#
pc/Users/okimii/

>>> hello world
hello world

this looks good to me

echo wasp
#

in discord

slate swan
#

or maybe you can use enumerate for the terminal

#

!e while True: print("lol")

unkempt canyonBOT
#

@slate swan :x: Your eval job has completed with return code 143 (SIGTERM).

001 | lol
002 | lol
003 | lol
004 | lol
005 | lol
006 | lol
007 | lol
008 | lol
009 | lol
010 | lol
011 | lol
... (truncated - too many lines)

Full output: too long to upload

echo wasp
#

do you understand my issue now

slate swan
echo wasp
#

here let me make it simpler

supple crescent
echo wasp
# echo wasp here let me make it simpler
                        server = result[query]
                        channel = self.client.get_channel(server[0])
                        message = "Welcome {member.mention} to {member.guild} this is a test!"
                        await channel.send(f"{message}")```
#

can anyone help? with that?

maiden fable
#

With?

echo wasp
#

example?

#

i can't put an f there like you think

supple crescent
#
@bot.command(name = 'order')
async def order(ctx: commands.Context, *, echo: str = "oops! make sure you say something! EX: !order [example]", message) -> None:
    msg = await ctx.send(echo)
    await msg.add_reaction(":thumbsup:")
    await msg.add_reaction(":thumbsdown:")

    channel = message.channel
    await channel.send('You have 60 seconds to confirm! Press [placheolder thumbsup] to confirm! press [placeholder thumbsdown] to try again!')
    def check(reaction, user):
            return user == message.author and str(reaction.emoji) == ':thumbsup:'
    try:
        reaction, user = await client.wait_for('reaction_add', timeout=60.0, check=check)
    except asyncio.TimeoutError:
        await channel.send('Gotcha! order confirmed')
    else:
        await channel.send(':thumbsup:')```
TypeError: order() missing 1 required keyword-only argument: 'message'
echo wasp
#

i can't do that because of this reason

#

and i can't f string that in the database because i don't put quotes to begin with

#

and if i do put quotes it ends up like the id and slot 0

boreal ravine
boreal ravine
#

move it

supple crescent
#

to in front of the msg?

#

@boreal ravine

boreal ravine
supple crescent
boreal ravine
#

no

#

ctx, echo, *, message up to you I guess

supple crescent
#

ahhh

boreal ravine
#

aren't those limited to staff only

maiden fable
#

Not this one

boreal ravine
#

where did you get it hmm

maiden fable
#

I am using it rn

#

Discord Developers Server

#

It was posted by Discord Devs

boreal ravine
#

Oh

#

ok

maiden fable
#

U on mobile?

#

Hmm, then just click on the button. Will just let u use the new Slash Commands UI and Chat Input

#

Your wish ¯_(ツ)_/¯

#

?

boreal ravine
#

i like new one better

maiden fable
#

But then, I have never looked into modals, even never used those

boreal ravine
#

@maiden fable you asian?

echo wasp
#

is there a such thing as a double f string

somber sky
#

anyone know how to make a turn off command where when u run it a certain command will stop working till u turn it back on

maiden fable
#

Well imho its better since now there are boxes around each param

echo wasp
#

well i have this ```py
@commands.command(name='toggle')
@commands.has_permissions(manage_guild=True)
async def toggle(self, ctx, *, command):
command = self.client.get_command(command)

    if command is None:
        await ctx.send("I can't find a command with that name")

    elif ctx.command == command:
        await ctx.send("You can not disable this command.")
    
    else:
        command.enabled = not command.enabled
        ternany = "enabled"  if command.enabled else "disabled"
        await ctx.send(f"I have {ternany} {command.qualified_name} for you!")```
maiden fable
#

Eh, most probably u ain't used to seeing this, so its feeling weird to u

echo wasp
#

nice

#

it works

#

just have to reset it ever time bot restarts

maiden fable
#

u can also do command: commands.Command in the function

echo wasp
#

and is there a such thing as double f strings?

somber sky
maiden fable
echo wasp
# maiden fable what u wanna do

i have a message from my data base and it has {} in it and it is in a {message} varible but it sends the messages with out defining the stuff in the {}

maiden fable
#

Ah

#

!e

print(f"{{}}")
unkempt canyonBOT
#

@maiden fable :white_check_mark: Your eval job has completed with return code 0.

{}
echo wasp
unkempt canyonBOT
#

@echo wasp :x: Your eval job has completed with return code 1.

001 |   File "<string>", line 1
002 |     cloud = welcome {member.mention} to {member.guild} this is a test!
003 |                     ^
004 | SyntaxError: invalid syntax
echo wasp
#

i know that

echo wasp
#

how can i fix that

boreal ravine
maiden fable
unkempt canyonBOT
#

str.format(*args, **kwargs)```
Perform a string formatting operation. The string on which this method is called can contain literal text or replacement fields delimited by braces `{}`. Each replacement field contains either the numeric index of a positional argument, or the name of a keyword argument. Returns a copy of the string where each replacement field is replaced with the string value of the corresponding argument.

```py
>>> "The sum of 1 + 2 is {0}".format(1+2)
'The sum of 1 + 2 is 3'
```  See [Format String Syntax](https://docs.python.org/3/library/string.html#formatstrings) for a description of the various formatting options that can be specified in format strings.
echo wasp
boreal ravine
maiden fable
#

!e

a = "Hi! My name is {}"
print(a.format("Hunter"))
unkempt canyonBOT
#

@maiden fable :white_check_mark: Your eval job has completed with return code 0.

Hi! My name is Hunter
boreal ravine
maiden fable
echo wasp
#

!e

message = "Welcome {} to {} this is a test!"
print(message.format(member.mention,member.guild))```
unkempt canyonBOT
#

@echo wasp :x: Your eval job has completed with return code 1.

001 | Traceback (most recent call last):
002 |   File "<string>", line 2, in <module>
003 | NameError: name 'member' is not defined
echo wasp
#

@maiden fable like that except without the error because it will be defined in the file?

#

well not everyone wants this format it is per server

#

that the other road block

maiden fable
#

use a db then

echo wasp
#

pymongo

maiden fable
#

then store the message in the format Hi! Welcome to the server {}, Hi, {} and stuff like that

#

Bots tend to use variables, like MEMBER_MENTION and stuff like that for the user to input so that they can also use str.replace

echo wasp
maiden fable
#

Then?

#

Just save it as Hi! Welcome!

echo wasp
#

i got it all set except for the stupid f string

#

it needs to use f twice onece out of the varible

slate swan
maiden fable
#

f strings ain't ideal for this use case

#

use str.format

echo wasp
#

but if i use str.format i'm stuck with doing it a certain way

lusty sky
#

why when using

@commands.check(MYID)
@commands.has_permissions(manage_messages=True)```
it only checks for permissions and not both?
boreal ravine
lusty sky
#

I have it defined with

#
def MYID(ctx):
    return ctx.author.id == 840606037378728007```
boreal ravine
echo wasp
lusty sky
#

it checks id when i donthave check.permissions

#

but when I have both it just ignores to check for authors ID

boreal ravine
lusty sky
#

I really need to start putting comments like that I cant lie

#

I have 0 comments in my entire bot atm and just have to use search function to find shit

boreal ravine
lusty sky
#

because when I wanna add some id auth to kick
i have to just search kick and theres like 10 different words with kick in my bot

boreal ravine
#

so what's not possible?

#

also why is member typehinted as a discord.user? it's supposed to be typehinted as a discord.Member

echo wasp
#

for the second line it says

#

Welcome to {member.guild} please look at #925976154890993734 and thanks for joining {member.mention}

#

if you did the format method it would be backwords

#

on the second one

#

@boreal ravine

swift monolith
#
@bot.command(pass_context=True)
async def random(ctx, *args):
    if len(args)==2:
        (minInt,maxInt)=args
    if len(args)==1:
        minInt=1
        maxInt=args
    else:
        await ctx.channel.send("Invalid")
    if minInt.isnumeric() and maxInt.isnumeric():
        minInt=int(minInt)
        maxInt=int(maxInt)
        rand=random.randint(minInt,maxInt)
        await ctx.channel.send(f"<@{ctx.author.id}>, your random number is {rand}")
    else:
        await ctx.channel.send("Invalid")

why does this not work

#

it doesnt give error

inner epoch
#

On a command my bot displays a button and I just use it to get the user id of the person and send him a dm....the thing is I just wish to suppress the words "Interaction failed"

maiden fable
#

😔 why using *args

#

or use *, args

proper acorn
green dust
#

You just put it?

tiny wolf
#

Oh wait lol

proper acorn
tiny wolf
#

You just put it

#

In code also

proper acorn
#

i cnt

wise jewel
proper acorn
#

oh i can

wise jewel
#

if you mean in discord: " ``` "

proper acorn
#

sry a tysm!

green dust
#

h

#

Sup java

formal basin
#

Why does this not work

slate swan
maiden fable
#

😔 OOPs Moment

formal basin
slate swan
slate swan
maiden fable
#

Lmao

maiden fable
slate swan
maiden fable
#

My brain

formal basin
#

Like this?

maiden fable
#

👀

formal basin
#

What?

#

Oh

#

Still not working

#

Ok

proper acorn
#

which function i must use to make my bot dms member

#

ye

#

tysm

upbeat otter
#

no

formal basin
#

Is that supposed to work?

#

Well it doesn’t

upbeat otter
#

no

#

it wont work

formal basin
upbeat otter
#

Role is an object, not an instance of Role object

upbeat otter
proper acorn
#

how to make a message logs?

formal basin
proper acorn
#

i mean when warn a person will logs message

#

yu

#

tysm

formal basin
proper acorn
#

client.event right?

formal basin
proper acorn
#

i meant

@client.event
formal basin
proper acorn
#

ty

maiden fable
#

remove or delete?

#

!d discord.on_message_delete

unkempt canyonBOT
#

discord.on_message_delete(message)```
Called when a message is deleted. If the message is not found in the internal message cache, then this event will not be called. Messages might not be in cache if the message is too old or the client is participating in high traffic guilds.

If this occurs increase the [`max_messages`](https://discordpy.readthedocs.io/en/master/api.html#discord.Client "discord.Client") parameter or use the [`on_raw_message_delete()`](https://discordpy.readthedocs.io/en/master/api.html#discord.on_raw_message_delete "discord.on_raw_message_delete") event instead.

This requires [`Intents.messages`](https://discordpy.readthedocs.io/en/master/api.html#discord.Intents.messages "discord.Intents.messages") to be enabled.
proper acorn
#

i added this to part but why

#

why still not work?

#

ahh lol

formal basin
proper acorn
slate swan
#

Why don't you just use the vsc python extension to run the program

maiden fable
#

if not role 👀

upbeat otter
maiden fable
#

Cz I am in a game

slate swan
proper acorn
#

i downloaded code runner

slate swan
#

not that shit

proper acorn
#

so i must add python in right?

proper acorn
#

this right?

slate swan
#

No

#

Oh sorry, top left I meant

proper acorn
slate swan
#

Yea

proper acorn
#

lol

slate swan
#

use this, and use run without debugging

proper acorn
#

wtf

slate swan
#

Just do it again

proper acorn
#

debug or without debug?

#

without right?

slate swan
#

Heyy

hazy oxide
#

i can't use nextcord.TextChannel in nextcord slash command

#

notimplementederror

static lintel
#
#@commands.has_permissions(manage_messages=True)
@discord.Permissions.moderate_members(True)
async def mute(ctx, member: discord.Member):
    mutedRole = discord.utils.get(ctx.guild.roles, name="Muted")
    await member.add_roles(mutedRole)
    await member.send(f"Shuddup stupid KEKEKEKEK {ctx.guild.name}")
    embed = discord.Embed(title="mute", description=f'Idiot {member.mention} has been muted', color=0x1abc9c)
    await ctx.send(embed=embed)```
for this mute slash command, i get the error 'flag_value' object is not callable. can someone point me in the right direction on how to properly enable ```Permissions.moderate_members```?
rocky trench
#

@static lintel as far as I know that isn't a permission

hazy oxide
#

mute command require manage roles, if using muted role to mute someone

rocky trench
#

I would use ctx.author.guild_permissions.manage_roles

static lintel
hazy oxide
#

timeout command require moderate members

rocky trench
#

Yeah

#

I never heard of that permission

#

Lemme do a quick check inside the docs

hazy oxide
#

moderate members is for timeout

static lintel
#

yeah thats what im trying to do

rocky trench
#

@hazy oxide

#

I'm pretty sure you could also use .timeout_members

#

!d discord.Permissions.moderate_members

unkempt canyonBOT
hazy oxide
rocky trench
#

Lemme see hold up

hazy oxide
#

use humanfriendly to convert the time

rocky trench
#

@static lintel use @commands.has_permissions(moderate_members = True)

static lintel
rocky trench
#

Thats what they told me in dpy.

slate swan
#

How do I make a command to dm a user?

rocky trench
#

I'm not very experienced with this new permissions

rocky trench
static lintel
#

interesting... ill try it out and see if it works

rocky trench
#

Or to dm someone else?

slate swan
#

dm sum else

rocky trench
#

I don't know why you would wanna do that

proper acorn
#

?any

#

how to use "if any" in discord

slate swan
#

and when i input teh users id i want to make it dm them

rocky trench
slate swan
rocky trench
#

Then hand verify them?

#

If they're already in there

slate swan
#

bro

#

im just gonna go

rocky trench
#

There is no point of forcing members to verify when they already joined. Half of the people won't do it because they're annoyed

slate swan
#

i whitelist them w ;wl 023949204

#

and then i want the bot to dm them

rocky trench
#

Ah a whitelist

#

Yeah

#

dming a member is very easy. You should know how that works tbh

#

You know how to pass a member in the paragrams?

slate swan
worthy tree
#

Would this work for user groups aswell let’s say I wana @ all coding members

slate swan
#

anyways

worthy tree
#

Nw then

slate swan
#

yes

rocky trench
#

Then do that

#

And member.send(messagessss)

#

Dpy isn't a good library to start with without knowledge

slate swan
#

lol i've been coding in py for 4 years madam

earnest sluice
#

what to use instead of discord.py? It's unmaintained, right?

slate swan
#

ohh alr

earnest sluice
#

which one? Why? 😄

slate swan
#

fetch_user() still works right or is that to outdated now

earnest sluice
#

also, thanks

slate swan
#

I'll suggest Disnake if you want to continue using discord.py like Library
Else go for hikari

#

is fetch_user still working or is that outdated now

#

i remeber using fetch_user and then in () putting the user id

#

and it working w send_message

#

send_message?

rocky trench
#

send_message 👀

slate swan
#

yea i told u bru i havent touched disc.py in 2 years 😭

#

update it first

rocky trench
#

only place its getting used atm is dpy 2.0

slate swan
#

i alr updated it

#

pip install -U discord

rocky trench
#

interaction.response.send_message

slate swan
#

i alr updated

#

i just installed it but i just havent done disc.py coding in 2 years

slate swan
#

including buttons and context menus

rocky trench
slate swan
#

Yessir

rocky trench
#

Oh I just noticed I said slash commands

rocky trench
#

I didn't mean to😅 I meant buttons and all the stuff too

slate swan
#

so something like this would work right

rocky trench
#

Why a function

slate swan
#

Fetch_user is a coroutine

#

await it

rocky trench
#

You're pretty wrong atm Obama😅

cold oyster
#

Hello

#

Obama kinda wrong

rocky trench
#

Do you know how to use commands?

cold oyster
#

Who needs help btw

slate swan
rocky trench
#

You don't need it in a function

slate swan
#

i like it better in a function

rocky trench
#

Pass member in paragrams and send to the member in the command

rocky trench
slate swan
#

thats personal preference

rocky trench
#

But like- you can typehint it to a discord.Member object and just send it to that, it takes 1 line

cold oyster
# slate swan yes

It should be like

@client.event
async def on_member_join(ctx):
  await member.send("Hello!")```


**__ ~~I think~~__**
slate swan
#

I just did the "welcome" as exampl

cold oyster
#

xd

slate swan
cold oyster
#

I am so happy, I finally hosted my bot on Heroku

slate swan
rocky trench
rocky trench
#

Lemme give you an example

slate swan
#

yeah i know await ctx.author.send("yes")

#

something like this right?

rocky trench
#
@bot.command()
async def test(ctx,member:discord.Member):
    await member.send('test')
cold oyster
#

Author.send will be message sending to the author bruv

rocky trench
#

This is how you send to a tagged member/ id of a member

cold oyster
#

READ EVERYTHING! except code

slate swan
rocky trench
#

ctx in event?😭

cold oyster
cold oyster
rocky trench
rocky trench
#

Not ctx

slate swan
rocky trench
slate swan
slate swan
rocky trench
#

Yeah but they shouldn't use member.send then

cold oyster
slate swan
slate swan
rocky trench
#

This is out of topic guys! Don't discuss emoji stuff or whatever here

cold oyster
slate swan
cold oyster
#

Nevermind

rocky trench
#

!ot

unkempt canyonBOT
slate swan
azure scroll
#

what does this error mean?

TypeError: '_asyncio.Future' object is not subscriptable
azure scroll
#

ok

cold oyster
azure scroll
# cold oyster Send code-
@bot.command()
async def rank(ctx):
    stats = xpCol.find_one({"_id": ctx.author.id})
    if stats is None:
        pass
    else:
        xp = stats["XP"]
        lvl = stats["Level"]
        boxes = int((xp/(200*((1/2) * lvl)))*20)
        rank = 0

        rankings = xpCol.find().sort("XP", -1)
        for x in rankings:
            rank += 1
            if stats["_id"] == x["_id"]:
                break

        rankEmbed = discord.Embed(title = "{}'s level stats".format(ctx.author.name))
        rankEmbed.add_field(name = "Name", value = ctx.author.mention, inline = False)
        rankEmbed.add_field(name = "Level", value = lvl, inline = False)
        rankEmbed.add_field(name = "XP", value = f"{xp}/{round(5 * (lvl ** 4/5))}", inline = False)
        rankEmbed.add_field(name = "Rank", value = f"{rank}/{ctx.guild.member_count}" , inline = False)
        rankEmbed.add_field(name = "Progress Bar", value = boxes * ":blue_square:" + (20-boxes) * ":white_large_square:" , inline = False)
        rankEmbed.set_thumbnail(url = ctx.author.avatar_url)
        await ctx.send(embed = rankEmbed)
cold oyster
#

Nvm-

#

IDk

azure scroll
#

duh

azure scroll
#

yeah

slate swan
#

await the find_one

slate swan
azure scroll
#

ok just a sec

slate swan
#

I thought u weree using pymongoviolence

boreal ravine
azure scroll
# slate swan await the find_one

U mean this?

@bot.command()
async def rank(ctx):
    stats = await xpCol.find_one({"_id": ctx.author.id})
    if stats is None:
        pass
    else:
        xp = stats["XP"]
        lvl = stats["Level"]
        boxes = int((xp/(200*((1/2) * lvl)))*20)
        rank = 0

        rankings = await xpCol.find().sort("XP", -1)
        for x in rankings:
            rank += 1
            if stats["_id"] == x["_id"]:
                break

        rankEmbed = discord.Embed(title = "{}'s level stats".format(ctx.author.name))
        rankEmbed.add_field(name = "Name", value = ctx.author.mention, inline = False)
        rankEmbed.add_field(name = "Level", value = lvl, inline = False)
        rankEmbed.add_field(name = "XP", value = f"{xp}/{round(5 * (lvl ** 4/5))}", inline = False)
        rankEmbed.add_field(name = "Rank", value = f"{rank}/{ctx.guild.member_count}" , inline = False)
        rankEmbed.add_field(name = "Progress Bar", value = boxes * ":blue_square:" + (20-boxes) * ":white_large_square:" , inline = False)
        rankEmbed.set_thumbnail(url = ctx.author.avatar_url)
        await ctx.send(embed = rankEmbed)```
boreal ravine
#

yes

slate swan
azure scroll
#

ok

slate swan
slate swan
boreal ravine
#

hm

azure scroll
# slate swan
 for x in rankings:
            rank += 1
            if stats["_id"] == x["_id"]:
                break

should be

async for x in rankings:
            rank += 1
            if stats["_id"] == x["_id"]:
                break
``` right?
azure scroll
#

cuz i'm getting python TypeError: 'AsyncIOMotorCursor' object is not iterable

slate swan
#

ig so haha

slate swan
#

He's using find not find_one

#

@slate swan

#

Oh, another one

slate swan
slate swan
azure scroll
slate swan
azure scroll
#

thanks guys

slate swan
proper acorn
#

@slate swan pls help me

#

how to put more one word in a txt file?

#

i only can put one then its work

#

if i put more it wont work

#

i did but not work

#

if only one like this then its work but

#

if like this then wont work

#

ahh ok ty

#

still not work @slate swan

#

i did

#

wdym?

#

change name or extension?

#

i did it

#

idk why

#

should i change from "with open" to "a = open(bad_word), data=json.loadslnsadlkjnsajldnsalnaslknsa?

#

like i just do with file json

#

open,read() and loads

#

instead of with open as

slate swan
#

use json.load(file) instead of json.loads(file.read())

proper acorn
#

k

#

still not work

maiden fable
#

readlines() is better imo

slate swan
#

are you trying to like get all the words in the text file?

slate swan
slate swan
#

For ur server only right?

proper acorn
#

public

#

why?

slate swan
#

.env file?

#

Ye, since the bot is public :) so everyone can ban words(wit db ofc)

#

Oh

maiden fable
#

Let's start hard coding the token in the code and hope for the best 👀

#

That's how I have been hosting my API on replit. Everything is public, but no one has ever seen the code lemon_pensive

native onyx
#

how do i check if an object exists inside the json file?

example:

{
    "Users": [{

        "a":{
            "a":"item"
        },
        "b":{
            "b":"item"
        }
    }]
}

I want to check if the user exists, if not, return False

unkempt canyonBOT
slate swan
#

!e ```
json_ = {"exists" : 1}
print( json_.get("exists"), json_.get("doesn't exist"))

unkempt canyonBOT
#

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

1 None
slate swan
#

If it's there you will get the value, elseNoen

native onyx
#
{
    "954331209599709195": {
        "user": "arcanjo",
        "name": "arcanjo1"
    }
}
#

i need to check if userid is already "registered" in json

#

if user already exists it returns true, if not false

slate swan
dense swallow
#

the on_message_edit event triggers even if message wasn't edited?

native onyx
#

att, I had something wrong here, now it's working, much done thanks

viscid relic
#

How to make optional command argument?

pastel lake
slate swan
#

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

viscid relic
#

Thank you

slate swan
#

why make a separate function when you can do it within that function

drowsy thunder
#

Hwo to dix

#

*fix

#

@slate swan

slate swan
drowsy thunder
vocal plover
#

indent the line

slate swan
drowsy thunder
slate swan
#

also, thats a very bad implementation of blacklisting words

drowsy thunder
slate swan
drowsy thunder
#

Gpt it

vocal plover
#

There's actually another huge disadvantage still; let's say one of your blacklisted word is a part of another word the message will be deleted, which is commonly known as the Penistone problem, see https://www.youtube.com/watch?v=CcZdwX4noCE

In a small town with an unfortunate name, let's talk about filtering and innuendo. And use it as an excuse for as many visual jokes as possible.

I'm at https://www.tomscott.com
on Twitter at http://twitter.com/tomscott
on Facebook at http://facebook.com/tomscott
and on Instagram as @tomscottgo

(Thanks to James Paulsen for prompting me to do th...

▶ Play video
slate swan
maiden fable
#

Lmao

vocal plover
#

i.e. badword vs b4dw0rd

maiden fable
#

AIs ftw

#

Imagine coding an AI just for detecting bad words on discord

drowsy thunder
#

@slate swan @vocal plover

vocal plover
#

I spent 8 months writing AI automod as my job so uh, I've experienced most of this pain

maiden fable
#

there is an invi char

slate swan
maiden fable
#

Hmm, then seems like a work for me

vocal plover
#

eh, moderation is much easier on large servers with the aid of AI

#

source: I mod large server and AI helps me

maiden fable
#

👀

#

Flex

#

@vocal plover did u see the new Slash UI?

vocal plover
#

Yeah slate 2 is pretty nice

maiden fable
vocal plover
#

can't wait for general availability so we can properly have multiline slash

maiden fable
#

Wait multiline support is also there in the build override?

slate swan
slate swan
vocal plover
maiden fable
vocal plover
#

so slate 2 needs full release before we get it

slate swan
maiden fable
#

Just click on the button

vocal plover
#

actually might be 5 lol

slate swan
maiden fable
#

Including u or.......

vocal plover
#

zep, dyno, raptor, hep, lester kinda

slate swan
maiden fable
vocal plover
#

not a bot smh

maiden fable
#

I beg to differ

slate swan
slate swan
vocal plover
#

In fairness each has their own reasons for being there

maiden fable
#

Indeed

vocal plover
#

I was so excited for modals and now that they're out idk what to use them for lmao

drowsy thunder
vocal plover
#

Looks like your discord.py version isn't high enough, you need to install the master/github version

#

pip install git+https://github.com/Rapptz/discord.py

drowsy thunder
#

pip install -U discord.py

vocal plover
#

No?

#

that will install 1.7.3 which doesn't have the ui module

vocal plover
#

Yes I can see

#

yup

drowsy thunder
#

@vocal plover @slate swan help meeeee

slate swan
#

what

drowsy thunder
severe quarry
#

Would it be better to save a whole VoiceChannel in an object aka keep it in memory, or keep just the VoiceChannel#id and convert it to a VoiceChannel later on (for memory's sake)

Or does it barely make a difference.

(Pycord / discord.py)

slate swan
vocal plover
severe quarry
#

Probably, what if we're talking a large scale bot though

#

Like 1000 VoiceChannel's at a time

#

It might impact CPU more tbf

gaunt ice
vocal plover
#

a thousand voice channels is still essentially nothing in terms of cpu and memory on any modern computer/server

maiden fable
#

Uhhhhh

maiden fable
slate swan
slate swan
maiden fable
#

That, yea

slate swan
#

just learn how to use a phone, it'll be better

drowsy thunder
slate swan
maiden fable
#

Weird keyboard layout btw

steady ore
#

Does anyone have any experience with Telegram bots?

maiden fable
drowsy thunder
slate swan
drowsy thunder
#

I do 50 wpm and ur saying this

maiden fable
maiden fable
maiden fable
#

Never used it

#

Same

slate swan
maiden fable
slate swan
#

nice

slate swan
maiden fable
#

😔 But then I just use 2 fingers

slate swan
maiden fable
#

Oh well, no need to install then

maiden fable
slate swan
drowsy thunder
#

@slate swan on replit,it doesnt work

drowsy thunder
#

I mean i cant click backspace on the place of the error

maiden fable
#

Ik

#

cz of the invi char

#

click a few times

drowsy thunder
drowsy thunder
slate swan
#

just do whatever you want
S.M.H.

drowsy thunder
#

1 finger from each hand

slate swan
drowsy thunder
#

thats honestly a worse idea

maiden fable
#

😔 Also no use of fast WPM, everyone still copies code off stack

vocal plover
slate swan
maiden fable
#

LMAO

#

Well its godot, so uhhh, actually its bad to copy code for godot

drowsy thunder
#

@maiden fable i cant do that the error comes still,can i guve the source code link?

maiden fable
drowsy thunder
#

Checm ur dms

maiden fable
#

Done

slate swan
#

dms es_pepeclown