#discord-bots

1 messages · Page 581 of 1

slate swan
#

and this gives me error

#

you missed a '

#

🤦‍♂️

echo wasp
#

not copy and pasted

slate swan
#

it should work if the user is in a guild with u

spiral frigate
#

?

slate swan
#

whatchu talking about

slate swan
#

didn't reply to u with the guild

echo wasp
#

let me get code

slate swan
#

it is supposed to say when a user reacts

#

but it says automatically

slate swan
#

even when no one react

#

do if payload.user != client.user

#

i think it is reacting to itelf

#

you did the exact opposite

#

error

slate swan
#

replace == with !=

#

i did

#

same i get error

#

this

mossy sigil
spiral frigate
echo wasp
#

@slate swan here it will be bellow this message

#

it tells me this error

slate swan
#

does anyone have any emotes for desktop status'? like the ones in this screenshot

echo wasp
slate swan
#

im trying to have desktop emotes that actually display a colored desktop, similar to the mobile emotes

steady flume
#

how put buttons and menu then ?

mossy sigil
slate swan
#

that's why it's Nonetype

#

remove id=

spiral frigate
echo wasp
slate swan
echo wasp
slate swan
#

and in your task @echo wasp
put
client.wait_until_ready at the top

#

!d discord.Client.wait_until_ready

unkempt canyonBOT
#

await wait_until_ready()```
This function is a [*coroutine*](https://docs.python.org/3/library/asyncio-task.html#coroutine).

Waits until the client’s internal cache is all ready.
spiral frigate
slate swan
spiral frigate
#

@steady flume do you know?

analog cape
steady flume
echo wasp
steady flume
#

how put buttons and menu then?

echo wasp
analog cape
#

10-4 doesnt mean anything

#

ooh

echo wasp
spiral frigate
slate swan
analog cape
#

stop saying 10-4 and just say "okay" so everyone understands

lapis lintel
#

Should I use json to store data or should I learn databases?

spiral frigate
analog cape
lapis lintel
#

I mean, for example, names, ids, images, and some scores

analog cape
#

how often are you reading/writing to this?

echo wasp
dim cedar
#
@bot.command()
@commands.is_owner()
async def nick(ctx, member: discord.Member, nick):
    await member.edit(nick=nick)```
#

hello this cmd is not working

#

not changing the nickname

echo wasp
#

I wonder why

analog cape
#

because with json files, everytime you write you have to read and write the whole new file again

dim cedar
echo wasp
harsh cradle
#

how to make a xp system for the users who AFK in voice

slate swan
#

What would be an easy way to welcome people back to the Discord if they already joined before? And what's also an easy way to only say "Welcome to the server" once. So they can't rejoin the Discord Server and spam it with welcome messages.

slate swan
#

Or like once / username

echo wasp
#

user.send send had not object

slate swan
#

user is NoneType

#

your get_user didn't find the user

#

send the code now, how did you replace everything?

echo wasp
lapis lintel
#

Say for example, a register team command

analog cape
#

okay so a couple times, then db is more useful because it scales so muc h better

lapis lintel
#

Alright, I'll learn that then

slate swan
#

For on_member_join event is there a way to only run it once/user? So when rejoining the server it would only do it on their first join. I don't wanna welcome them more than once. Or can I put a cooldown on it so it won't welcome back to back?

#

store their id

echo wasp
slate swan
#

Is there a way to do it without storing their ID?

#

store their name

analog cape
echo wasp
# echo wasp ok here
# bot.py
import discord
import asyncio
import os
from discord.ext import commands
from dotenv import load_dotenv


load_dotenv()
TOKEN = os.getenv('DISCORD_TOKEN')
GUILD = os.getenv('DISCORD_GUILD')
intents = discord.Intents.default()
intents.members = True
client = commands.Bot(command_prefix='&', intents=intents, case_insensitive=True)


async def my_background_task():
     await client.wait_until_ready()
    user = client.get_user(786788350160797706)
    await user.send("Test")
    await asyncio.sleep(1)


@client.event
async def on_ready():
    print('Logged in as')
    print(client.user.name)
    print(client.user.id)
    print('------')

client.loop.create_task(my_background_task())
client.run(TOKEN)```
analog cape
slate swan
#

Link?

slate swan
#

Could I just make a json and add them into the json?

echo wasp
slate swan
#

!d discord.Client.wait_until_ready

unkempt canyonBOT
#

await wait_until_ready()```
This function is a [*coroutine*](https://docs.python.org/3/library/asyncio-task.html#coroutine).

Waits until the client’s internal cache is all ready.
slate swan
#

and what is this
bot = client

echo wasp
slate swan
#

for what

echo wasp
#

i also use that in my other bot

slate swan
#

bruh

echo wasp
#

i'll remove it

#

done

#

so what is wrong with my code?

slate swan
slate swan
#

the whole line would be
await client.wait_until_ready()

echo wasp
#

that is what the line on the bottem is for and it worked fine for in channels

#

it is supposted to repeat

slate swan
#

Is their an first join attribute?

echo wasp
#

@slate swan can you help me with that issue now it only runs once not multiple times

slate swan
#

noidea why

#

Don't create tasks like that

echo wasp
steady flume
#

how put buttons and menu then ?

echo wasp
# steady flume how put buttons and menu then ?

I think this might help idk i didn't watch it is just a title i saw https://www.youtube.com/watch?v=-85tDSlfb3w

github: https://github.com/elixss
You NEED discord-components:
pypi: https://pypi.org/project/discord-components/
also, please join their discord server: https://discord.gg/s52WKb56pk
the music used for the video is: https://youtu.be/xDUsAK3TndI

this file inspired me and might help you, if you dont understand it:
https://gitlab.com/discord.py-...

▶ Play video
#

@slate swan how do i write that in then that doc didn't make much sense

steady flume
#

but i made 2.0

echo wasp
slate swan
#
      if len(reaction.message.attachments) == 0:
        embedVar = discord.Embed(title="** **", color=discord.Colour.gold(), description=str(reaction.message.content))
        embedVar.set_author(name=str(reaction.message.author.name), icon_url=reaction.message.author.avatar_url)
        embedVar.add_field(name="Original", value=f"[Jump!]({reaction.message.jump_url})", inline=False)
        time = reaction.message.created_at
        embedVar.set_footer(text=str(time))
        await schannel.send("ID: " + str(reaction.message.id), embed=embedVar)
      else:
        for attachment in message.attachments:
          await attachment.save(attachment.filename)
          attname = attachment.filename
        embedVar = discord.Embed(title="** **", color=discord.Colour.gold(), description=str(reaction.message.content))
        embedVar.set_author(name=str(reaction.message.author.name), icon_url=reaction.message.author.avatar_url)
        embedVar.add_field(name="Original", value=f"[Jump!]({reaction.message.jump_url})", inline=False)
        time = reaction.message.created_at
        embedVar.set_footer(text=str(time))
        file = discord.File(str(attname))

Error in the last line:
Variable attname referenced before assignment

I know what the error is about but I have no idea why it'd throw that. Can anyone help?

echo wasp
slate swan
#

yeah

slate swan
#

I defined it at the right time though

slate swan
#

exactly

#

I think I did

#

yet I'm still getting the error

#

but I can't figure out where I'm wrong

#

Try putting it lower

slate swan
slate swan
#

It will say its not defined?

#

it's already lower enough. I mean it gets defined before it gets used. as you can see, it gets defined above the last line. and the last line is the only line that uses the variable

#

Hi, I can't make a command that makes all channels be blocked (disable messages)

@bot.command(name = "raid-on")
async def raidon_(ctx):
    await ctx.message.delete()
    for channel in ctx.guild.channels:
        try:
            await ctx.channel.set_permissions(ctx.guild.default_role, send_messages=False)  
        except Exception as e:
            print(e)
#

help please c:

slate swan
#

There is no error

#

It only disables the channel where I made the command

slate swan
#

I'll have to put the whole for loop there

#

alright then

echo wasp
#

how to loop something i didn't understand what @slate swan said to do

slate swan
slate swan
unkempt canyonBOT
#
Resources

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

echo wasp
slate swan
#

@slate swan can I just do

file = discord.File(attachment)

?

#

wondering if an attachment object can be passed to discord.File

slate swan
#

for example, print "works" after every line

#

that way you can figure out what's causing the error

pliant gulch
#

!d discord.Attachment.to_file

unkempt canyonBOT
#

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

Converts the attachment into a [`File`](https://discordpy.readthedocs.io/en/master/api.html#discord.File "discord.File") suitable for sending via [`abc.Messageable.send()`](https://discordpy.readthedocs.io/en/master/api.html#discord.abc.Messageable.send "discord.abc.Messageable.send").

New in version 1.3.
slate swan
pliant gulch
#

Have you read the docs for File?

slate swan
#

No but I saw that example in a stackoverflow post

pliant gulch
slate swan
#

Yeah its better

slate swan
echo wasp
#

not what i am trying to do is what you supplied

slate swan
#

@pliant gulch
at_obj referenced before assignment

echo wasp
# slate swan What do you want to do exactly

I want to repeat that part that says background _task but when he fixed it for me it only goes once the way it ws setup for channels that loop that i have in there rn worked now it doesn'

#

t

slate swan
# slate swan <@270700034985558017> `at_obj` referenced before assignment
        for attachment in message.attachments:
          at_obj = attachment
          break
        embedVar = discord.Embed(title="** **", color=discord.Colour.gold(), description=str(reaction.message.content))
        embedVar.set_author(name=str(reaction.message.author.name), icon_url=reaction.message.author.avatar_url)
        embedVar.add_field(name="Original", value=f"[Jump!]({reaction.message.jump_url})", inline=False)
        time = reaction.message.created_at
        embedVar.set_footer(text=str(time))
        file = discord.File(at_obj.to_file)
#

last line

#

you define at_obj in the for loop

#

learn about scoping

#

it's basic python

slate swan
#

and there's a global scope

#

define at_obj before the for loop

#

in the function

#

as None maybe

slate swan
echo wasp
slate swan
slate swan
#
        at_obj = None
        for attachment in message.attachments:
          at_obj = attachment
          break
        embedVar = discord.Embed(title="** **", color=discord.Colour.gold(), description=str(reaction.message.content))
        embedVar.set_author(name=str(reaction.message.author.name), icon_url=reaction.message.author.avatar_url)
        embedVar.add_field(name="Original", value=f"[Jump!]({reaction.message.jump_url})", inline=False)
        time = reaction.message.created_at
        embedVar.set_footer(text=str(time))
        file = discord.File(at_obj.to_file)
slate swan
echo wasp
slate swan
#

just... try it

#

if it doesn't work I'm dumb

#

and I vanish

#

if not, how does this code work

count = 0
for i in range(10):
  count += 1
print(count)
slate swan
#

because you define count before the for loop

#

that's exactly what I'm telling you to do here

slate swan
slate swan
slate swan
#

in the loop

#

that means it is in the same scope as the outer code

echo wasp
slate swan
#

but if you define it in the for loop, you can't use it outside of it

#

unless you've defined it there before

slate swan
slate swan
slate swan
slate swan
echo wasp
slate swan
#

never had to go through that

slate swan
#

that's how it is

slate swan
#

check this out

frank cloud
#

it's not like that

slate swan
#

it doesn't work @slate swan

#

!e

for i in range(10):
  count = 1
print(count)
#

same error

unkempt canyonBOT
#

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

1
slate swan
#

bro what

#

then I'm the problem

#

what if

#

nah

#

YES

#

what if message.attachments doesn't contain anything

#

the code knows that you wanted to assign it a value but it can't go in the for loop

#

since there's nothing to iterate through

slate swan
#

bruh

slate swan
#

full code @slate swan

  if reaction.emoji == "⭐" or reaction.emoji == "💀":
    if count_reacts(reaction.message) == breaker or count_reacts(reaction.message) > breaker:
      messages = await schannel.history(limit=None).flatten()
      for message in messages:
        if str(reaction.message.id) in message.content:
          return
      if len(reaction.message.attachments) == 0:
        embedVar = discord.Embed(title="** **", color=discord.Colour.gold(), description=str(reaction.message.content))
        embedVar.set_author(name=str(reaction.message.author.name), icon_url=reaction.message.author.avatar_url)
        embedVar.add_field(name="Original", value=f"[Jump!]({reaction.message.jump_url})", inline=False)
        time = reaction.message.created_at
        embedVar.set_footer(text=str(time))
        await schannel.send("ID: " + str(reaction.message.id), embed=embedVar)
      else:
        at_obj = None
        for attachment in message.attachments:
          at_obj = attachment
          break
        embedVar = discord.Embed(title="** **", color=discord.Colour.gold(), description=str(reaction.message.content))
        embedVar.set_author(name=str(reaction.message.author.name), icon_url=reaction.message.author.avatar_url)
        embedVar.add_field(name="Original", value=f"[Jump!]({reaction.message.jump_url})", inline=False)
        time = reaction.message.created_at
        embedVar.set_footer(text=str(time))
        file = discord.File(at_obj.to_file)
slate swan
#

message is defined there?

slate swan
#
for attachment in message.attachments:
#

🗿

#

No

#

feelsbadman.jpg

#

thank you for sending the whole code

#

so I also learned something today

#

why didn't it say "message is not defined"

#

¯_(ツ)_/¯

#

but atleast the new code shouldn't have thrown the same error

#

it just shouldn't have worked because at_obj was None

echo wasp
#

@slate swan

upbeat otter
#

guys, how do I check, in how many servers my bot is

slate swan
#

!d discord.Client.guilds

unkempt canyonBOT
#

property guilds: List[discord.guild.Guild]```
The guilds that the connected client is a member of.
upbeat otter
#

thenx

slate swan
#

check the amount with len()

echo wasp
#

print(guild)

upbeat otter
#

?

echo wasp
upbeat otter
#

I found it thanx

steady flume
#

what i need put instead values??

slate swan
#

what do you event what to send

echo wasp
#

how do you create a loop with my setup so it sends a message more than once

slate swan
#

what the

#

use @tasks.loop()

#

!d discord.ext.tasks.loop

unkempt canyonBOT
#

discord.ext.tasks.loop(*, seconds=..., minutes=..., hours=..., time=..., count=None, reconnect=True, loop=...)```
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
#

it's a decorator which you can use on your task

echo wasp
#

so how would i set it up with my setup i didn't really understand it

slate swan
#

you can start this later with task_instance.start()

#
@tasks.loop(seconds=5)
async def my_background_task():
    await client.wait_until_ready()
    user = client.get_user(786788350160797706)
    await user.send("Test")
#

then you use
my_background_task.start() somewhere

#

maybe in on_ready

echo wasp
#

what does seconds= do?

#

delay?

slate swan
#

defines in how many seconds it repeats

#

quite obviously

echo wasp
#

ok

slate swan
#

sorry Geno

#

just wanted to type task and it pinged u

echo wasp
#

@slate swan i did what you said just having trouble with the start on ready i got the top done just how do i do the bottem?

slate swan
#

what?

#

what do you mean top and bottom

echo wasp
#

where do i put my_background_task.start()

#

or how

slate swan
#

in on_ready

#

doesn't matter

#

the task can be defined anywhere

echo wasp
#

can you show me example

slate swan
#

lemme get ur previous code

#
import discord
import asyncio
import os
from discord.ext import commands
from dotenv import load_dotenv
from discord.ext import tasks

load_dotenv()
TOKEN = os.getenv('DISCORD_TOKEN')
GUILD = os.getenv('DISCORD_GUILD')
intents = discord.Intents.default()
intents.members = True
client = commands.Bot(command_prefix='&', intents=intents, case_insensitive=True)

@tasks.loop(seconds=5)
async def my_background_task():
    await client.wait_until_ready()
    user = client.get_user(786788350160797706)
    await user.send("Test")


@client.event
async def on_ready():
    print('Logged in as')
    print(client.user.name)
    print(client.user.id)
    print('------')
    my_background_task.start()

client.loop.create_task(my_background_task())
client.run(TOKEN)```
#

I think

#

I also hope, since I haven't worked with tasks yet

#

but I got some idea

echo wasp
#

ok

#

that is easy enough just didn't understand where to put it

slate swan
#

wait

echo wasp
#

now it doesn't even work

slate swan
#

remove the client.loop.create_task line

#

lmao

echo wasp
#

i did

#

and now it doesn't work at all

slate swan
#

is there an error?

echo wasp
#

nopde

slate swan
#

damn lemme research it then

#
from discord.ext import tasks

@tasks.loop(seconds=5.0, count=5)
async def slow_count():
    print(slow_count.current_loop)

slow_count.start()
#

this is from the docs

echo wasp
#

ok

#

so what then

#

how do i write that in

slate swan
#

in a cog, they start it in __init__

echo wasp
#

wait count

slate swan
#

but in the main file...

echo wasp
#

i'm a dummy

slate swan
#
{discord.utils.format_dt(member.created_at, style = 'R')}```
`discord.ext.commands.errors.CommandInvokeError: Command raised an exception: AttributeError: module 'discord.utils' has no attribute 'format_dt'`
#

the count doesn't matter

#

it's optional

#

others say the start doesn't have to be in on_ready

#
import discord
import asyncio
import os
from discord.ext import commands
from dotenv import load_dotenv
from discord.ext import tasks

load_dotenv()
TOKEN = os.getenv('DISCORD_TOKEN')
GUILD = os.getenv('DISCORD_GUILD')
intents = discord.Intents.default()
intents.members = True
client = commands.Bot(command_prefix='&', intents=intents, case_insensitive=True)

@tasks.loop(seconds=5)
async def my_background_task():
    await client.wait_until_ready()
    user = client.get_user(786788350160797706)
    await user.send("Test")

@client.event
async def on_ready():
    print('Logged in as')
    print(client.user.name)
    print(client.user.id)
    print('------')

my_background_task.start()
client.run(TOKEN)
#

just like this

echo wasp
#

ok trying

#

@slate swan your a genus

#

it works now

slate swan
#

lesgo

echo wasp
#

yay

slate swan
#

well yes

#

that's API spamming

#

Hi ! I found a really cool bot online that i would like to tweak and use on my server. The only issue is that..the code looks like this and i'm 60% sure that it contains a token grabber or some kind of backdoor. How can i see the code ?

#

Lmao what the hell

cloud dawn
#

This is encrypted, not the best encryption but we're not allowed to help decrypt it for you.

slate swan
#

At that point just code yourself a bot

#

!a

#

?

slate swan
slate swan
slate swan
#

can discord do anything about api abuse?

slate swan
placid escarp
#

how can i get nsfw gifs without reddit?

slate swan
slate swan
#
    @commands.command()
    @commands.has_permissions(ban_members=True)
    async def ban(self, ctx, member: discord.Member,*,reason):
        await member.ban(reason=reason)
        embed = discord.Embed(title=f"{member} a été bannis || `{reason}` ✅", colour=discord.Colour.green())
        await ctx.send(embed=embed)
        en = discord.Embed(description=f"vous avez été bannis du serveur `{ctx.guild.name}` || `{reason}`", colour=discord.Colour.red())
        await member.send(embed=en)
slate swan
placid escarp
slate swan
#

using reddit is easier

slate swan
# slate swan ?

The bot does not want to send a message to the person who will be banned

#

Command raised an exception: Forbidden: 403 Forbidden (error code: 50007): Cannot send messages to this user

slate swan
slate swan
#

Thats what the reddit api does it limits your api key for like a day

#

send a message to them before banning them

#

Oh ok

slate swan
slate swan
#

what ? the code encrypted with pyarmor ?

slate swan
#

From where?

#

i think it was a replit..i don't remember, i downloaded it a few weeks ago

rotund nova
#

why dont working?

slate swan
#

u sure u got the emoji id and not the message id ?

slate swan
slate swan
slate swan
#

if u keep doing it, ban your bot

slate swan
#

I mean your application

slate swan
#

Well in the api reference it says the errors and why so just look for it

#

but you can easily just copy your code to another bot so it's not worth much

pliant gulch
slate swan
pliant gulch
#

Cooldowns also exists

#

And whatever wrapper they use should be handling bucket depletion and global ratelimiting

slate swan
#

What if a whole server spams commands on a bot does the bot not respond to that guild?

pliant gulch
#

Again cooldowns exist

#

And its dependent on the endpoint

slate swan
slim whale
#

someone has the list of the guild regions?

pliant gulch
#

E.g POST MESSAGE ratelimit is 5/5s

pliant gulch
slate swan
rotund nova
#

so what do

slate swan
slate swan
rotund nova
#

ok

slim whale
#

is this the list of the guild regions?

#

like in voice channel settings

slate swan
#

"For questions and discussions relating to Discord bot development with discord.py and other relevant Python libraries."

slate swan
#

mmhm

slim whale
#

its a question to make the bot put emojis instead of europe

#

i need to know the regions to put emojis for them xd

slate swan
#

hm

#

how do you even get the regions

slim whale
#

ctx.guild.region

slate swan
#

!d discord.Guild.region

unkempt canyonBOT
#

The region the guild belongs on. There is a chance that the region will be a str if the value is not recognised by the enumerator.

slim whale
#

in my case returns europe

slate swan
#

lool

#

like it

slim whale
#

thanks

slate swan
#

this has all of them

slim whale
#

:D

slate swan
rotund nova
#

yea i have good

slate swan
#

Anybody has some ideas for some bot features?

civic saddle
#

i need help, i try running my bot and it says settings.json doesn't exist. But it's literally right there.

slate swan
#

that's not even your code

slate swan
#

lmao

sage otter
#

Have you considered saving the file. What the interpreter sees is not what is shown on line 11.

#

also what you told us is not what the error even says…

slate swan
#

the other detective, I'm not the only one

civic saddle
#

forogt i tried changing the directory

slate swan
slate swan
slate swan
#

Forgot the capital t.

#

fawk

slate swan
slate swan
#

stop

#

No

civic saddle
#

do I change the

with open("settings.json") as file: settings = json.load(file)

to the folder the code is in?

slate swan
#

chess with buttons

slate swan
slate swan
#

wtf

#

then

#

4 players 3D chess

#

with discord_components's buttons

slate swan
#

the py chess library seems pretty good

slate swan
#

yes

#

of course

#

No

steady flume
#
 @discord.ui.select(placeholder=None, custom_id='3', min_values=1, max_values=1, options=menus, row=1)
    async def menu_page(self, menu: discord.ui.Select, interaction: discord.Interaction):
        if menu == "Moderation":
            await interaction.response.edit_message(embed=self.embeds2[self.embed_count], view=self)

why bot doesnt change anything ? (if so i made it in discord.ui.View)

#

imma show all code

#
class Pages(discord.ui.View):
    menus = [
        discord.SelectOption(label="Currency", default=True),
        discord.SelectOption(label="Moderation")
    ]

    def __init__(self, author: int, embeds: list, embeds2: list):
        self.author = author
        super().__init__(timeout=15)
        self.embeds = embeds
        self.embeds2 = embeds2
        self.author = author
        self.embed_count = 0
        self.response = None

    async def on_timeout(self):
        for child in self.children:
            child.disabled = True
            child.style = discord.ButtonStyle.grey
            self.children[0].emoji = ":dl_arrow:"
            self.children[1].emoji = ":dr_arrow:"
        await self.response.edit(view=self)

    async def interaction_check(self, interaction: discord.Interaction):
        if self.author == interaction.user.id:
            return True
        else:
            await interaction.response.send_message(f"This menu is not for you", ephemeral=True)

    @discord.ui.button(label=None,
                       custom_id='1',
                       style=discord.ButtonStyle.red, disabled=True, emoji=":l_arrow:", row=2)
    async def back_page(self, button: discord.ui.Button, interaction: discord.Interaction):
        if self.embed_count > 0:
            self.embed_count -= 1
            self.children[1].disabled = False
            if self.embed_count == 0:
                button.disabled = True
            await interaction.response.edit_message(embed=self.embeds[self.embed_count], view=self)
#
 @discord.ui.button(label=None,
                       custom_id='2',
                       style=discord.ButtonStyle.red, disabled=False, emoji=":r_arrow:", row=2)
    async def last_page(self, button: discord.ui.Button, interaction: discord.Interaction):
        if self.embed_count < len(self.embeds) - 1:
            self.embed_count += 1
            self.children[0].disabled = False
            if self.embed_count == len(self.embeds) - 1:
                button.disabled = True
            await interaction.response.edit_message(embed=self.embeds[self.embed_count], view=self)

    @discord.ui.select(placeholder=None, custom_id='3', min_values=1, max_values=1, options=menus, row=1)
    async def menu_page(self, menu: discord.ui.Select, interaction: discord.Interaction):
        if menu == "Moderation":
            await interaction.response.edit_message(embed=self.embeds2[self.embed_count], view=self)
rancid oxide
#

🇬🇪

civic saddle
#

What is a good plant ID Api

leaden jasper
#

how to set embed image for a png file

#

like playerCount.png

slate swan
#

in pycord do i call discord.VoiceClient.cleanup inside a discord.VoiceClient.disconnect?

leaden jasper
#

delete the part where it checks if its the ctx user

#

user.id == ctx.author.id this ig

hollow palm
#

Yeah I've tried that

#

That has no effect

leaden jasper
#

then idk sorry

hollow palm
#
  embed = discord.Embed(title = "Currently Playing", colour = discord.Colour.blue())
  embed.add_field(name = "Song", value = title, inline = False)
  embed.add_field(name = "Length", value = str(datetime.timedelta(seconds = length)), inline = False)
  embed.add_field(name = "Link", value = url, inline = False)
  msg = await ctx.send(embed=embed)
  await msg.add_reaction("\u23F8")
  await msg.add_reaction("\u25B6")
  await msg.add_reaction("\u23F9")
  while True:
    try:
      reaction, user = await client.wait_for("reaction_add", check=lambda reaction, user: reaction.emoji in ["\u23F8", "\u25B6", "\u23F9"], timeout = length)
    
    except asyncio.TimeoutError:
      return await msg.clear_reactions()
        
    async def process():
      if reaction.emoji == "\u23F8":
        await msg.remove_reaction(reaction.emoji, ctx.author)
        ctx.voice_client.pause()
      elif reaction.emoji == "\u25B6":
        await msg.remove_reaction(reaction.emoji, ctx.author)
        ctx.voice_client.resume()
      elif reaction.emoji == "\u23F9":
        await msg.remove_reaction(reaction.emoji, ctx.author)
        ctx.voice_client.stop()

    asyncio.create_task(process())

This is a message that is sent after a song is played, the message has reactions that pause, play or stop, every time one is reacted to the bot automatically deletes the reaction so that the reactions can be used more than once by the same user. The only problem is that the person that invokes the command is the only one who will get his reactions deleted, if anyone else reacts the bot responds by pausing, playing, or stopping, but their reaction will not be deleted and therefore they can only pause, play, or stop once. For the line containing await msg.remove_reaction(reaction.emoji, ctx.author) it requires a member argument but I do not know what to replace the argument with.

slate swan
#

Replace it with the user who reacted

hollow palm
leaden jasper
#

how to get image url of a sent message by the bot?

cursive spindle
#
@bot.command()
async def clear_messages(ctx):
    await ctx.message.delete()
    for channel in ctx.guild.channels:
        if channel.type == discord.ChannelType.text:
            await channel.purge(limit=None)
            print(f"{channel} history cleared")
    await ctx.send("**Done**")
leaden jasper
#

ok

#

!d discord.TextChannel

unkempt canyonBOT
#

class discord.TextChannel```
Represents a Discord guild text channel.

x == y Checks if two channels are equal.

x != y Checks if two channels are not equal.

hash(x) Returns the channel’s hash.

str(x) Returns the channel’s name.
slate swan
#

guys, how i add cooldown on sending a command to the bot's private message?

#

in "error"

junior falcon
#

anyway for get the creator name of a channel?

outer violet
#

how would i make it so it shows the result of the time? so like if said user did *timer 5 and it ends in 5 seconds how would i make it like this your countdown has ended (lasted #s)?

@commands.command()
    async def timer(self, ctx, seconds):
        try:
            secondint = int(seconds)
            if secondint > 300:
                await ctx.send("i dont think i can go over 5 minutes")
                raise BaseException
            if secondint <= 0:
                await ctx.send("i dont think i can do negatives")
                raise BaseException

            message = await ctx.send(f"⏱️ Timer: {seconds}")
            
            while True:
                secondint -= 1
                if secondint == 0:
                    await message.edit(content="⏱️ Timer ended")
                    break

                await message.edit(content=f"⏱️ Timer: {secondint}")
                await asyncio.sleep(1)
            await ctx.reply(f"your countdown has ended!")
        except ValueError:
            await ctx.send("you must enter a number")
slate swan
#

hey

#

anyone know how i could make a command that sets values to an embed using flags and sends it?

manic wing
slate swan
#

Can someone help me with editing slowmode

manic wing
#

show your command_prefix/get_prefix

#

clearly this error is triggering when you return nothing

#

why dont you just return '!'

#

i can assure you, the error will go away

#

jeez mate

#

you see how there are 2 return's that are not returning anything

#

you have 3 returns, 1 return's prefix, and the other 2 return None; hence where the error is coming from

dusk dust
#

can i send a message to a specific channel? i tried searching google or youtube to try to find the answer but the videos are out of date

manic wing
#

yes

dusk dust
acoustic ermine
#
help.start()
AttributeError: type object 'MyHelp' has no attribute 'start'```
code
```py
@client.command()
async def helpmenu(ctx):
  help = MyHelp()
  help.start()```
manic wing
#

probably because data[0] is nothing

#

print(data[0]

manic wing
acoustic ermine
slate swan
#

how do i make a new channel?

acoustic ermine
slate swan
dusk dust
slate swan
#

why do i get this error?

pliant gulch
# slate swan

discord.Client does not have commands, only commands.Bot and its auto sharded counter part

#

Also pass_context is deprecated

slate swan
#

just trying to make a ticket system

jade tartan
#
@client.command(aliases=['staff-application'])
async def apply(ctx):
    a_list = []
    submit_channel = client.get_channel(906141169271062578)
    channel = await ctx.author.create_dm()

    def check(m):
        return m.content is not None and m.channel == channel

    for question in q_list:
        sleep(.5)
        await channel.send(question)
        msg = await client.wait_for('message', check=check)
        a_list.append(msg.content)

    submit_wait = True
    while submit_wait:
        await channel.send('End of questions - "submit" to finish')
        msg = await client.wait_for('message', check=check)
        if "submit" in msg.content.lower():
            submit_wait = False
            answers = "\n".join(f'{a}. {b}' for a, b in enumerate(a_list, 1))
            submit_msg = f'Application from {msg.author} \nThe answers are:\n{answers}'
            await submit_channel.send(submit_msg)

Hi anyone know how to make a submit button to make it submit an staff application for then review in a particular channel?

slate swan
slate swan
#

any idea why?

#

Hello. I am having trouble using the discord-py-slash-command library module. I installed it with the command shown on the PyPi website. The error message said that slash isn't defined. Why is this?

jade tartan
#

You need to pass it through ur async def

slate swan
#

using discord.py v2, how can i see if a user has nitro or not? im open to methods such as testing for animated pfps, or custom banners

jade tartan
slate swan
#

nvm i am incorrect let me look

#

the best i have is !d discord.Member.premium_since

#

ive already got that lmao

#

Then if it is None, then the user does not have nitro

#
a = member.premium_since
if a is None:
  return nitro = False
else:
  return nitro = True

``` maybe something like thast
boreal ravine
#

!d discord.Member.premium_since

unkempt canyonBOT
#

An aware datetime object that specifies the date and time in UTC when the member used their “Nitro boost” on the guild, if available. This could be None.

pliant gulch
#

You could try gif pfps etc but those aren't 100%

#

As someone could have nitro, and use a regular pfp

slate swan
#

yeah

slate swan
pliant gulch
#

¯_(ツ)_/¯

slate swan
pliant gulch
#

Then again, someone can have nitro and not have boosted

slate swan
#

this alt of mine is a booster though

#

which really weirds me out

jade tartan
#

Why is no one answering me

#

ama have to join other python servers

slate swan
jade tartan
#

yeah well by the time it reaches the top it will be closed automatically

#

but will see then

#

yeah see its closed

gaunt herald
#

Does discord stops giving discord verified bot developer badge?

thick sigil
#

yes

boreal ravine
gaunt herald
#

sad

thick sigil
#

they are right

slate swan
# gaunt herald sad

People started doing disocrd bots with little code so they would get the badge so it was unfair for the real devs

boreal ravine
#

How would you know

sick birch
#

it's quite obvious isn't it?

jade tartan
# boreal ravine Whats your question
@client.command(aliases=['staff-application'])
async def apply(ctx):
    a_list = []
    submit_channel = client.get_channel(906141169271062578)
    channel = await ctx.author.create_dm()

    def check(m):
        return m.content is not None and m.channel == channel

    for question in q_list:
        sleep(.5)
        await channel.send(question)
        msg = await client.wait_for('message', check=check)
        a_list.append(msg.content)

    submit_wait = True
    while submit_wait:
        await channel.send('End of questions - "submit" to finish')
        msg = await client.wait_for('message', check=check)
        if "submit" in msg.content.lower():
            submit_wait = False
            answers = "\n".join(f'{a}. {b}' for a, b in enumerate(a_list, 1))
            submit_msg = f'Application from {msg.author} \nThe answers are:\n{answers}'
            await submit_channel.send(submit_msg)

Hi anyone know how to make a submit button to make it submit an staff application for then review in a particular channel?

slate swan
#

description=snipe_message_content[channel.id], color=0x2f3136) KeyError: 862766760741699615 how am i meant to fix this..

slate swan
sick birch
boreal ravine
jade tartan
thick sigil
boreal ravine
slate swan
jade tartan
#

i know how to make the button but how do i make the feature of it

slate swan
boreal ravine
slate swan
boreal ravine
keen talon
#

👀

gaunt herald
#

How do I get early developer in Discord?
Head on over to your bot's settings page in the Developer Portal. At the top of that page will be a banner with instructions on how to get started. This process is currently available for bots in more than 75 servers, to allow developers to preemptively apply.

#

is this working

boreal ravine
#

No, thats the verified bot badge.

gaunt herald
#

ok

slate swan
gaunt herald
#

thanks

jade tartan
#

if that make sense

boreal ravine
jade tartan
#

u know when u apply for a job and u hit a apply button

boreal ravine
#

🧐

jade tartan
#

and it gets send to a recruitment team

keen talon
#

Nice pfp @slate swan lemon_imp

keen talon
slate swan
#

Whos the real grey discord icon?

jade tartan
#

so ig ill do it by my self

boreal ravine
#

you just don't know how to do it

jade tartan
# boreal ravine we do

i mean its pretty easy i can see on the internet but i just wanted to know what the code was called

#

if that make sense

boreal ravine
#

simple idk whats so hard about it

jade tartan
#

nvm

boreal ravine
#

aight 👍

jade tartan
boreal ravine
#

what do you wanna achieve?

jade tartan
#

to send the applications answers from the members to a specific channel

boreal ravine
#

well just save the data somewhere

#

and send it using the button

keen talon
void crane
#

I have a problem, my robot isn't working but it has been verified and people have told me that it should work. Is there something where I can check what is wrong. It says that I left the vc but it doesn't leave

void crane
#

yeah it is the bottom command

#

it didn't give me any errors

boreal ravine
void crane
#

it says it leaves but it stays in the vc

boreal ravine
#

hm

void crane
#

yeah it has been broken for a couple of months

jade tartan
#

can i share it

boreal ravine
#

isnt a thing?

void crane
#

why is it deleting

boreal ravine
#

he's not gonna learn anything if you spoonfeed to him

void crane
#

kk

jade tartan
#

Well he can learn it

boreal ravine
#

How

jade tartan
#

and like read it, understand it

#

before copy pasting it

boreal ravine
#

isnt your code copied too though

#

it had pass_context which people dont even use anymore

jade tartan
#

yes but it read it before copying it

jade tartan
boreal ravine
#

idk then seems like disconnect isnt an attr

jade tartan
#

form

boreal ravine
jade tartan
void crane
#

i was following a tutorial to learn it and my code just hit a brick wall

boreal ravine
#

well as the error says your getting a nonetype

#

hm

void crane
boreal ravine
#

Not really

void crane
#

kk

high pollen
#

Why does this not work??

reacted_users = await new_msg.reactions[0].users().flatten()
reacted_users.pop(reacted_users.index(bot.user))```
This is in cog. works fine when not in cog
#

Error:-

discord.ext.commands.errors.CommandInvokeError: Command raised an exception: AttributeError: module 'discord.ext.commands.bot' has no attribute 'user'```
#

what to do?

slate swan
#

its discord.ext.commands.Bot

#

check your bot variable

unkempt canyonBOT
#

:incoming_envelope: :ok_hand: applied mute to @formal plaza until <t:1636172392:f> (9 minutes and 59 seconds) (reason: duplicates rule: sent 4 duplicated messages in 10s).

slate swan
#

dont use that to automate your account ,its against discord tos

#

if you're looking for a library for making a normal bot , just use discord.py ( or its forks) / hikari

#

🍜 if the question be against rule5 ,sure

#

why did you want to use discum tho?

velvet crest
#

How can i create a cache system

high pollen
sand void
#
@client.command('Add')
@commands.has_permissions(administrator=True) 
async def Add(ctx, user : discord.Member, *, role : discord.Role):
  if role.position > ctx.author.top_role.position: 
    return await ctx.send('**:x: | That role is above your top role!**') 
  if role in user.roles:
      await user.remove_roles(role) 
      await ctx.send(f"Removed {role} from {user.mention}")
  else:
      await user.add_roles(role) 
      await ctx.send(f"Added {role} to {user.mention}") 

So i have this code and it's followed by this error which i don't understand because i have the admin perms to do so

#

Like.. It's saying i don't have the role perms to run that command right? Or am i just straight up stupid?

#

Yeah ok i'm just fucking stupid.

The Bot role it's self had to be high into the list

boreal ravine
loud junco
#

how do i make every user's a different database in replit

#

ive been watching tutorial but none of them show this

slate swan
#

i want to make many embeds iterating over a simple list , can i create a function for this?

#

curchannel isn't defined.Make sure to use the correct syntax.

slate swan
#

defined in line 4

#

why did i get this?

maiden fable
unkempt canyonBOT
#

Python allows you to set custom attributes to most objects, like your bot! By storing things as attributes of the bot object, you can access them anywhere you access your bot. In the discord.py library, these custom attributes are commonly known as "bot variables" and can be a lifesaver if your bot is divided into many different files. An example on how to use custom attributes on your bot is shown below:

bot = commands.Bot(command_prefix="!")
# Set an attribute on our bot
bot.test = "I am accessible everywhere!"

@bot.command()
async def get(ctx: commands.Context):
    """A command to get the current value of `test`."""
    # Send what the test attribute is currently set to
    await ctx.send(ctx.bot.test)

@bot.command()
async def setval(ctx: commands.Context, *, new_text: str):
    """A command to set a new value of `test`."""
    # Here we change the attribute to what was specified in new_text
    bot.test = new_text

This all applies to cogs as well! You can set attributes to self as you wish.

Be sure not to overwrite attributes discord.py uses, like cogs or users. Name your attributes carefully!

slate swan
maiden fable
#

sort of

slate swan
#

can u help?

maiden fable
#

Sure

visual island
#

right click -> refactor -> rename

maiden fable
slate swan
#

i am new to this but i'll give it a try

visual island
#

oh I thought it works in vsc too

slate swan
#

its Spyder

maiden fable
#

Also u didn't await embed_gen

maiden fable
slate swan
#

can i invite you to my github project maybe we can work on this together ?

visual island
#

Vsc doesn't provide mass renaming?

maiden fable
visual island
#

then

maiden fable
#

Change all Occurrences but there's a problem

#

Suppose there's a word, awesome and we just wanna change it to good

#

And if there's awesomeness, then it would change that to goodness

visual island
#

:potatopopcorn:

visual island
#

including strings?

maiden fable
#

It would literally change the word even if it's a substring

visual island
#

bruh

#

use pycharm

maiden fable
#

Hahaha

#

And fry my PC? I'mma pass that one

slate swan
#

lol

visual island
#

oh that's the reason

#

I thought you hate pycharm

slate swan
#

so what things i have to change in my current code?

maiden fable
#

Icy gonna guide u since I got some urgent work to do, sorry 😤

visual island
slate swan
#

so i need to await embed gen

#

what else?

#

like this right?

visual island
#

mhm

slate swan
visual island
#

none

slate swan
#

thanks!! the error is now gone

#

why does the last on_raw_reaction func not work?

maiden fable
#

Do u have intents?

slate swan
#

no?

maiden fable
slate swan
#

how do i get them?

#

do i need to import something?

maiden fable
#

Dude

slate swan
#

😐

maiden fable
#

!d discord.Intents.reactions

unkempt canyonBOT
maiden fable
#

There

slate swan
#

thanks i'll try

maiden fable
#

In your bot constructor

#

!intents

unkempt canyonBOT
#

Using intents in discord.py

Intents are a feature of Discord that tells the gateway exactly which events to send your bot. By default, discord.py has all intents enabled, except for the Members and Presences intents, which are needed for events such as on_member and to get members' statuses.

To enable one of these intents, you need to first go to the Discord developer portal, then to the bot page of your bot's application. Scroll down to the Privileged Gateway Intents section, then enable the intents that you need.

Next, in your bot you need to set the intents you want to connect with in the bot's constructor using the intents keyword argument, like this:

from discord import Intents
from discord.ext import commands

intents = Intents.default()
intents.members = True

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

For more info about using intents, see the discord.py docs on intents, and for general information about them, see the Discord developer documentation on intents.

maiden fable
#

Just instead of members, u need reactions

slate swan
#

let me read this very slowly

maiden fable
#

intents = discord.Intents.reactions should work

slate swan
maiden fable
#

U have

slate swan
#

how does it look like

maiden fable
#

client = commands.Bot

#

Do u have this?

#

Or client = discord.Client

slate swan
maiden fable
#

Ah yes that

slate swan
#

should i change it to bot?

maiden fable
maiden fable
slate swan
maiden fable
#

Nope

#

Inside the brackets

slate swan
#

like this?

maiden fable
#

Nononono

visual island
slate swan
#

😔

maiden fable
#

discord.Client(intents=discord.Intents.default())

maiden fable
maiden fable
visual island
#

defaulted to Intents.default()

maiden fable
#

Done it 🤦

visual island
#

cool

slate swan
#

done 😃

maiden fable
#

Don't bully me pithink

visual island
slate swan
#

what's next?

maiden fable
#

Run the bot

#

And see if it's fixed

slate swan
#

now i have intents enabled ?

visual island
#

in the dev portal also

slate swan
#

i have to enable intents?

maiden fable
#

Yes

maiden fable
slate swan
#

ok

visual island
maiden fable
#

He just did default, no need to enable in dev portal

#

He didn't enable members and presence intent

visual island
#

oh

maiden fable
slate swan
visual island
#

dont bully

slate swan
#

no error log either

maiden fable
#

Oh, hmm

visual island
#

Intents.reactions = True

slate swan
#

here is my code

maiden fable
maiden fable
#

!d discord.Intents.default

unkempt canyonBOT
#

classmethod default()```
A factory method that creates a [`Intents`](https://discordpy.readthedocs.io/en/master/api.html#discord.Intents "discord.Intents") with everything enabled except [`presences`](https://discordpy.readthedocs.io/en/master/api.html#discord.Intents.presences "discord.Intents.presences") and [`members`](https://discordpy.readthedocs.io/en/master/api.html#discord.Intents.members "discord.Intents.members").
slate swan
#

did i do something wrong in the last func?

maiden fable
# slate swan

Try adding a print statement at the very first of the function and see if it's printing it. If it is printing it, that means the function is being triggered

visual island
#

who knows

maiden fable
maiden fable
#

Nope

slate swan
#

or outside

maiden fable
#

Outside it

slate swan
#

ah okay

#

i only pressed one reaction

maiden fable
#

Mhm

slate swan
#

triggered 3 times

maiden fable
#

But at least the function is getting triggered

slate swan
#

true

maiden fable
#

Could be one of the if statements is failing?

#

Can I see what's id_red?

slate swan
#

why didn't it created a new channel tho

maiden fable
slate swan
maiden fable
#

Ahhh I understand

slate swan
#

as far as i understand i used to statement so it only triggers when a specific emoji reaction is added

#

aka red circle emoji

visual island
#

id_red should be undefined tho

maiden fable
#

First send a message hey bot

maiden fable
slate swan
#

works

maiden fable
#

?

visual island
slate swan
#

oh no

maiden fable
#

?

slate swan
#

i have to set id_red as global?

maiden fable
#

It is global

slate swan
#

inside a func

#

which is inside another func

#

should i move it up?

maiden fable
#

Globals can work inside functions even if the function is inside a function which is again inside another function which is again inside another function and so on 🤣

slate swan
#

why did it not create a new channel

maiden fable
#

First send a message hey bot

slate swan
#

okay

#

works

maiden fable
#

After that reaction

slate swan
#

what?

#

u mean the !start command?

maiden fable
#

No

#

I meant, after that react to the message

slate swan
#

okay wait

#

triggered

#

it triggered? why

#

it wasnt supposed to

visual island
unkempt canyonBOT
#

@visual island :white_check_mark: Your eval job has completed with return code 0.

2
visual island
#

hmm

maiden fable
#

Lol

visual island
#

my eval is bad then

maiden fable
#

Why tho

visual island
#

it prints 1

maiden fable
#

Lmao

visual island
#

try eval it in your bot

maiden fable
#

Doing that only haha

slate swan
#

so why did it trigger???

#

🥲

maiden fable
#

Sorry dude. Gotta go get ready

#

@visual island can ya help him please? Thanks

visual island
slate swan
visual island
#

show code

slate swan
visual island
#

so it triggers when your bot reacts?

slate swan
#

yessir

slate swan
visual island
#

can you try printing payload.member?

slate swan
#

sure

#

prints name of the bot

#

discord username with tag

slate swan
#

so i realized the second if loop isn't getting triggered

heavy folio
#

im not sure why my bot is getting HTTP ratelimited
is there a common reason?
also does the ratelimit only affect that one bot or all of my bots? would regenerating the bots token/creating a new one resolve the issue

slate swan
#

first one triggers

maiden fable
slate swan
#

try using proxies

heavy folio
#

api calls in what sense tho

slate swan
#

the error is in second if loop

#

it doesnt get triggered

spiral frigate
#

who knows what the error is 'AttributeError: module 'pymongo.collection' has no attribute 'count_documents'

maiden fable
#

Like await send

#

await edit

#

await fetch

heavy folio
#

oh

maiden fable
#

U doing that?

slate swan
#

how do i fix this?

#

nvm fixed

slate swan
#

anyone have any emotes that are status indicators like these ones but for a desktop instead of mobile?

boreal ravine
#

google it

tiny ibex
#

Can someone actually tell me how tf can this bot get my info even when I don't share any common server
https://whois.mrrobot.app/886120777630486538

visual island
tiny ibex
#

I don't share any mutual servers with the bot

#

And you get restricted when you try to find details bout someone who doesn't share a mutual server with bot

slate swan
tiny ibex
#

Never knew it was possible

slate swan
#

!d discord.Client.fetch_user it is

unkempt canyonBOT
#

await fetch_user(user_id, /)```
This function is a [*coroutine*](https://docs.python.org/3/library/asyncio-task.html#coroutine).

Retrieves a [`User`](https://discordpy.readthedocs.io/en/master/api.html#discord.User "discord.User") based on their ID. You do not have to share any guilds with the user to get this information, however many operations do require that you do.

Note

This method is an API call. If you have [`discord.Intents.members`](https://discordpy.readthedocs.io/en/master/api.html#discord.Intents.members "discord.Intents.members") and member cache enabled, consider [`get_user()`](https://discordpy.readthedocs.io/en/master/api.html#discord.Client.get_user "discord.Client.get_user") instead.
tiny ibex
#

I was always restricted when I tried doing that

slate swan
#

read the description :p

boreal ravine
#

or use discords api and fetch it directly from there

slate swan
#

get_user and fetch_user are different

boreal ravine
#

simple really

tiny ibex
slate swan
#

Np

tiny ibex
boreal ravine
tiny ibex
boreal ravine
#

🤔

tiny ibex
boreal ravine
#

For what

tiny ibex
#

For telling me the endpoint

#

lol

boreal ravine
#

ig

maiden fable
slate swan
visual island
#

like, if it isn't per IP, how do you get banned on replit if others that get banned and not you?

heavy folio
slate swan
#

is this correct way ?

#

i want to create a new channel and send a message in it

#

so now i can do

new_channel.send
```?
boreal ravine
#

yes if curchannel is a discord.Message object

slate swan
#

cool thanks

#

or a guildchannel

#

right???

boreal ravine
#

hm

slate swan
#

works , thanks!!

bright crow
#

guys where should i type commands ?

#

for python bot

boreal ravine
#

in a channel?

#

ah you mean that

#

#bot-commands then.

bright crow
#

my mean to code the bot

boreal ravine
#

in a python file

bright crow
#

where

#

its app or website or ?

boreal ravine
#

an IDE

bright crow
#

idle?

boreal ravine
#

an IDE

bright crow
#

Wat the hell is IDE?

boreal ravine
#

An integrated development environment (IDE) is software for building applications that combines common developer tools into a single graphical user interface (GUI).

bright crow
#

so give me link

boreal ravine
#

you don't have an IDE?

bright crow
#

no

#

i just have python

#

so

#

give me link o

#

if yes i have it

boreal ravine
#

Depends

bright crow
boreal ravine
#

nothing

#

just saying if thats an IDE use it ig

bright crow
#

discord bot

boreal ravine
#

yes

#

use an IDE then

bright crow
boreal ravine
#

I don't know

#

is that an IDE?

bright crow
#

idk

#

wait a sec

#

you mean this?

boreal ravine
#

yes something like that

bright crow
slate swan
#

That's for Java KEKL

bright crow
slate swan
#

PyCharm is good

#

You can go for it

bright crow
tidal hawk
#

How do i get category object by id?

#

didn't see get_category() nor fetch_category() from docs

boreal ravine
#

since a category is a channel object too

slate swan
#

!d discord.Client.get_channel returns category channel type too