#discord-bots
1 messages Β· Page 1077 of 1
server status?
yeah status I guess
Not aware of any tools that can do that, I'm sure some exist though
But how would i make the a cmd?
you can do it through command prompt
I want it to be cmd for my bot but i have no clue how.
you'd probably use subprocess to be able to evoke a terminal command
search for "python ping tool" led me to this https://pypi.org/project/pythonping/
then capture the output. I'm sure they have a method for that
I can't tell you if it's any good, you can be the judge of that
It wont be as easy as it is on py its thru a discord bot and i have no clue on how too.
like in general if you understand.
a raspberry pi?
I'm confused
Lemme send you something in here
await bot.change_presence(activity=discord.Activity(type=discord.ActivityType.watching, name="google.com"))
Like that
For a example
But i want to be able to ping a ip address and receive a up or down status but idk how too
Probably use the tasks extension to periodically ping it
and adjust status accordingly
!e ```py
from discord.ext import commands
client = commands.Bot(commands_prefix=['thing'], help_command=None, case_insensitive=True)
client.run("thing")```
@past aspen :x: Your eval job has completed with return code 1.
001 | Traceback (most recent call last):
002 | File "<string>", line 1, in <module>
003 | ModuleNotFoundError: No module named 'discord'
sad
why did you pass a list to the command_prefix kwarg
its literally just one element?
and nice instance naming
!e ```py
import os
os.system('cd /')
os.system('ls')```
@past aspen :warning: Your eval job has completed with return code 0.
[No output]
@past aspen :warning: Your eval job has completed with return code 0.
[No output]
You can do this in #bot-commands instead of here
5 reactions π
Hey guys, i wanna start making bots in python, is it better/easier than Node.js?
oh i didn't see the channel somehow lol
Depends upon yr fluency in Python
Welp, i know some stuff in python, but nothing about node.js
Well its yr choice ultimately
ill say python would be easier because of its easy to understand syntax
djs is easy too
I find d.js to be lower level, so maybe not as easy
It's closer to the API, if that makes sense
Also you're asking in a python server
Why on_invite_create is not working? I made it print the guild id but it doesn't work
@bot.event
async def on_invite_create(invite):
print(invite.guild.id)```
iirc it needs manage_guild permissions, i may be wrong
!d discord.on_invite_create
discord.on_invite_create(invite)```
Called when an [`Invite`](https://discordpy.readthedocs.io/en/latest/api.html#discord.Invite "discord.Invite") is created. You must have the [`manage_channels`](https://discordpy.readthedocs.io/en/latest/api.html#discord.Permissions.manage_channels "discord.Permissions.manage_channels") permission to receive this.
New in version 1.3.
Note
There is a rare possibility that the [`Invite.guild`](https://discordpy.readthedocs.io/en/latest/api.html#discord.Invite.guild "discord.Invite.guild") and [`Invite.channel`](https://discordpy.readthedocs.io/en/latest/api.html#discord.Invite.channel "discord.Invite.channel") attributes will be of [`Object`](https://discordpy.readthedocs.io/en/latest/api.html#discord.Object "discord.Object") rather than the respective models.
This requires [`Intents.invites`](https://discordpy.readthedocs.io/en/latest/api.html#discord.Intents.invites "discord.Intents.invites") to be enabled.
All intents are enabled
yeah, manage channels
intents = discord.Intents.all()
bot = commands.Bot(command_prefix="!", intents=intents)```
I have all the intents enabled
im looking for basic code for reading and writing to a json file using a bot command
import json
# reading
with open("file") as json_file:
data = json.load(json_file)
# writing
with open("file", "w") as json_file:
json.dump(data, json_file)
!d json.dump
json.dump(obj, fp, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw)```
Serialize *obj* as a JSON formatted stream to *fp* (a `.write()`-supporting [file-like object](https://docs.python.org/3/glossary.html#term-file-like-object)) using this [conversion table](https://docs.python.org/3/library/json.html#py-to-json-table).
If *skipkeys* is true (default: `False`), then dict keys that are not of a basic type ([`str`](https://docs.python.org/3/library/stdtypes.html#str "str"), [`int`](https://docs.python.org/3/library/functions.html#int "int"), [`float`](https://docs.python.org/3/library/functions.html#float "float"), [`bool`](https://docs.python.org/3/library/functions.html#bool "bool"), `None`) will be skipped instead of raising a [`TypeError`](https://docs.python.org/3/library/exceptions.html#TypeError "TypeError").
The [`json`](https://docs.python.org/3/library/json.html#module-json "json: Encode and decode the JSON format.") module always produces [`str`](https://docs.python.org/3/library/stdtypes.html#str "str") objects, not [`bytes`](https://docs.python.org/3/library/stdtypes.html#bytes "bytes") objects. Therefore, `fp.write()` must support [`str`](https://docs.python.org/3/library/stdtypes.html#str "str") input.
If *ensure\_ascii* is true (the default), the output is guaranteed to have all incoming non-ASCII characters escaped. If *ensure\_ascii* is false, these characters will be output as-is.
thank you i will implement that
What on_guild_join and remove do?
how to open .db-journal file sqlite3?
why would you open the db-journal file
they are fired when your bot gets added or removed to a guild ( server )
I want to see what's in it
on_guild_join - someone invited your bot to their server
on_guild_remove - you left by yourself, someone kicked your bot, server was deleted, etc
It's not important what's in there, it's sort of like a cache. It wasn't meant to be viewed and edited, so I don't believe there's a way to see what's in it
Which event is more useful for invite manager?
wait, ill show :)
on_guild_join
oh boy
are you gonna dump the binary file π³
(or whatever weird encoding it's in)
its a temporary file created by sqlite3 while writing data into a .db file
Ah
Why is ctx.author.voice.channel.members not working anymore and saying
Command raised an exception: AttributeError: 'NoneType' object has no attribute 'channel'
The author is not in a voice channel
it runs when you join and leave a guild
!d disnake.Member.voice
property voice```
Returns the memberβs current voice state.
nah wasnt that
it just worked out of nowhere tho
any1 know how to assign a role to a member?
!d discord.Member.add_roles
await add_roles(*roles, reason=None, atomic=True)```
This function is a [*coroutine*](https://docs.python.org/3/library/asyncio-task.html#coroutine).
Gives the member a number of [`Role`](https://discordpy.readthedocs.io/en/latest/api.html#discord.Role "discord.Role")s.
You must have the [`manage_roles`](https://discordpy.readthedocs.io/en/latest/api.html#discord.Permissions.manage_roles "discord.Permissions.manage_roles") permission to use this, and the added [`Role`](https://discordpy.readthedocs.io/en/latest/api.html#discord.Role "discord.Role")s must appear lower in the list of roles than the highest role of the member.
ok ill ask now
this is gonna seem rlly stupid but
async def randint(message):
general_channel = client.get_channel(##################)
if "_randint" in message.contents:
await general_channel.send("From?")
@client.command(name="startint")
async def startint(message):
general_channel = client.get_channel(##################)
x = message.content
await general_channel.send("To?")
@client.command(name="endint")
async def endint(message):
general_channel = client.get_channel(##################)
y = message.content
xy = random.randint(x,y)
await general_channel.send("xy")
else :```
why doesnt this work?
it prob is im a beginner
With this how can i see what the highest number is
cause i will have
{
"1": "heh",
"2": "hehv2"
}
also when i store will it automatically add it as
"3": "hehv3"```
the startint and endint are errors
!code
Here's how to format Python code on Discord:
```py
print('Hello world!')
```
These are backticks, not quotes. Check this out if you can't find the backtick key.
Can someone please help me in #help-potato it's an issue with a discord bot.
ok i did the thing im wondering why this doesnt work
my code prob way off but im trying to make it so it asks follow up questions and turns the answers into variables
a command's first parameter should be of type commands.Context which doesn't have a contents/content attribute. You don't have to overwrite the command's name if the function's name is the same. Your indents are weird, startint and endint shouldn't be indented. In your endint function you're sending a string when I'm guessing you want to send the variable?
ok im not sure what that means im a complete beginner but here are my full intentions
Can someone please try and help me here.
essentially i want a command that makes a random number generator. The first part is to activate the command which should work fine. The second and third part asks for the first and second integer which is how low and high the number generated in the end can be. These numbers would ideally be stored as variables in the code and be used in the the part, which just outputs a random number with the limitations previously made. Im trying to make it so it first asks "From?" which is where u say the first number and its stores it (x). Followed by that is "To?" which is the second number also stored as a variable (y). Then these numbers would be put into the generator and it would work
not sure how to properly code this so i tried and googled multiple times but i dont get it
ver confusing stuff ):
add parameters to your command so you can pass in the numbers, and typehint it to int so you don't have to convert it. The rest is pretty self explanatory
@bot|commands.command(...)
async def command(ctx: commands.Context, param1: int, param2: int, ...):
...
additionally, check the documentation for both command and Context
no idea what that does but ty
yeah, dpy isn't exactly a library for beginners...
π€·
How can I add numbers in a row in list? E.g
1)
2)
3)
...
using enumerate()
@bot.command()
async def number(ctx: commands.Context, min: int, max: int):
await ctx.channel.send(random.randint(min, max)
!e
myList = ["item 1", "item 2", "item 3"]
text = ""
for index, item in enumerate(myList):
text += f"{index + 1}) {item}\n"
print(text)
@sick birch :white_check_mark: Your eval job has completed with return code 0.
001 | 1) item 1
002 | 2) item 2
003 | 3) item 3
!e
myList = ["item 1", "item 2", "item 3"]
text = "\n".join([f"{i + 1}) {item}" for i, item in enumerate(myList)])
print(text)
@sick birch :white_check_mark: Your eval job has completed with return code 0.
001 | 1) item 1
002 | 2) item 2
003 | 3) item 3
Shorter, hard to read
For embed pagination, how would I split 4 commands per page?
So far I got this:
commands_list = [command for command in self.bot.walk_commands()]```
but have no clue what to do next.
Can i see what the highest number that is stored as the name is?
{
"1": "heh",
"2": "hehv2"
}
Also when i add something to it via a command does it automatically format it like:
"3": "hehv3"```
I havve 2 for
Why not just store it in a list?
A dict with numbers as keys is basically a list but with extra steps
will i be able to auto add to lists in json
Saving to a file?
yes
Well there's no such thing as "adding" in a JSON file
The entire content of the file has to be deleted, then rewritten from start to finish
... what is reccomended for me to store the stuff in then
A database
firestore?
no their realtime version
Hm, well I'm unfortunately not experienced with that
I've only worked with SQL databases
or should i just use firestore
well im looking for something that will be cloud hosted. I cant exactly pay or activate most free tier stuff due to not having my debit card yet.
async def number(ctx: commands.Context, min: int, max: int):
await ctx.channel.send(random.randint(min, max)) ```
about this how can i set the integers i dont get it
Set what integers?
Call the command from Discord using this syntax:
<command_prefix>number <min> <max>
for example:
!number 0 10
For embed pagination, how would I split 4 commands per page?
So far I got this:
commands_list = [command for command in self.bot.walk_commands()]```
but have no clue what to do next.
alr ty!
does anyone have any cloud based databases that are reccomended
@sick birch can you give me an example of a database list
so i can see if the database im using supports it
What do you mean?
a list in a database
im trying to add one to my database to see if it enters correctly
Err.. I don't have a postgres database lying around with a list in it unfortunately
https://www.postgresql.org/docs/9.1/arrays.html maybe this is helpful?
would a list in a database be entered as ["eh","eh2"]
Like the SQL query?
idk
Sorry, I'm not fully understanding what you're asking me
this is all my database has to offer in case of adding stuff
i dont even understand what i was asking
Hm, probably doesn't support arrays then
Can you tell me about the nature of the information you're storing?
There may be a better way
E.g is it dynamic, do you allow other users to change it, etc
different statuses the bot can have
other information that needs to be stored for some reason
Can users change the list?
yes
Hmm yeah if the users didn't change it it would be very easy
You wouldn't need a database or a JSON file even
i just need the posibility of them adding stuff
they dont need to edit entries at least
in the database?
Yes
Ok so how would I go about that
Just create a table as usual, add only one column of strings
If you can get the data from the database into your python code as a list, a simple random.choice() will do
also is there a way to have
import firebase_admin
from firebase_admin import credentials
cred = credentials.Certificate("path/to/serviceAccountKey.json")
firebase_admin.initialize_app(cred)
in all my cog files automatically?
it says this when I check for errors
and I dont know how to fix it
I'll send the lines
prefix = 'g!'
version = '1.0.0'
owner = '625025751413948436'
owner_name = 'Clicks#8882' ```
@sick birch
Yeah notice how the lines are all over the place
Just make sure they're all indented on the same level
e.g the first letters all start in the same place
oh okay. ty
Question on how I can check the value of a parameter in the case the user inputs a invalid response bc rn I try to type .purge d it will return an error saying couldn't find d as a member or something like that, I tried using a try except but it doesn't catch it in this case so what would you do?
# Event on [clear] command usage
@client.command(aliases = ['clear', 'purge', 'delete'])
async def clear_chat(ctx, member: discord.Member = None, amount: int = 5):
try:
if member is None:
await ctx.channel.purge(limit = amount)
await ctx.send(f'{amount} messages have been cleared.')
elif not member:
print('test')
except:
print('Error')
You need to do it inside a command error handler
Oh thats a discord.py thing
So is that a separate thing then, wouldn't be apart of this function
Yes because the error happens during the command invocation, so error handler should do it
So I found a script on google and it's a class w/ listeners and cogs and some other random stuff I haven't seen before so I'm curious as to how this script would know there's an error? Is there an event that catches it when it comes in and then basically translate it to whatever you have it to return as?
cirno π
you can raise your own errors
if you want one when someone does .purge d or whatever
why would you catch an error and raise your own?
Β―_(γ)_/Β―


been a minute since ive seen you

@visual island isn't Kobo Kanaeru a vtuber?
Mhm
how you know thatπ³
y9su is susπ³
google?
you sure you dont watch herπ€¨
i dont..
lmao
Is there any event in dpy that happens every second?
No, why?
No, just use tasks.loop
What's the use case?
jeez you guys are fast
I wanted to get the guild id from the event
you watch her?
only thing that happens on the background consistently is hbs and its mostly every 4.5 seconds
Yea then use tasks.loop
nope
I don't know about it any github ex or tutorial
Right, but why do you need an event every second?
yeah.. Doesn't guild ID never change?
@lyric apex https://discordpy.readthedocs.io/en/latest/ext/tasks/index.html here
no ids change
Discord snowflakes never change
hence the name snowflake
Well the name snowflake comes from the fact that every ID is guaranteed to be unique
no
Sort of like a snowflake, which is unique
it comes from a snowflake
a snowflake is always unique like Robin
Robin is a unique lad that no one is exactly like him
thank you π
π¦
take it as a compliment tho
Giveaway
poor robin
π
Cmds
But it resets after restart?
Everything resets after restart if you don't use a db
That's the problem
every mutated value* 
They understood what I meant, right 
is there anything against connecting to database asynchronously in cog's __init__ -> bot.loop.create_task?
yes we didπ π
Well, for one that's not the right place to do it
aww shucks.... i'd like to avoid bot's setup_hook to make the cog sort of independent module
depends on the situation
Other than the fact that it's not the right place, usually your connector of choice is going to return the connection object after it's connected
i made a whole db client class 
i see
And create_task doesn't wait for the connection to finish, unless you explicitly await it, which defeats the whole point of putting it inside the __init__
ol' good setup_hook then?
you know it
thanks for an advice π
so I realize you could do @command.error and that's how you'd catch em, are you able to use a for loop then to basically repeat that for every command
no, you can do @commands.on_command_error
just use a global command error handler
Oh I see
iirc its commands.on_command_error
Oh yeah it looked wrong lol
!d discord.discord.ext.commands.on_command_error
discord.ext.commands.on_command_error(ctx, error)```
An error handler that is called when an error is raised inside a command either through user input error, check failure, or an error in your own code.
A default one is provided ([`Bot.on_command_error()`](https://discordpy.readthedocs.io/en/latest/ext/commands/api.html#discord.ext.commands.Bot.on_command_error "discord.ext.commands.Bot.on_command_error")).
?
it should be your function name
@bot.event
async def on_command_error(...):
...
i haven't done dpy in forever so I apologize if that's wrong
the params are ctx and error
if you forgot them
Just too lazy to type them out
smh set an example robinπ
Either way their problem isn't with the parameters
im trying to import a conf.json from the following file tree
wb.py
config.json
cogs
^-events.py <this file needs to refrence config.json->
this is the code that needs to refrence it
import firebase_admin
from firebase_admin import credentials
cred = credentials.Certificate("path/to/serviceAccountKey.json")
firebase_admin.initialize_app(cred)
So when it comes to parameters and player commands
If you can have 2 parameters, being a members name/tag and the second being a int
Both are optional but if I wanted to input the int w/out the player name/tag how would I get it to recognize that the int belongs with the the second parameter and not the first
Or is that what
parameter: str
parameter: int
does
I don't believe that's possible without manually figuring it out
You could make the integer the first argument however
yea alright I didnt know if there was some method for that
anyone know?
Oh one more thing, what does pass_context = True mean
That's old. If you're seeing that in a tutorial, it's a good time to ditch that tutorial
o
You usually don't need it anymore
alrighty
Is it better to do Value = None or Value is None or does it matter
Also how do you know what error classifies as?
use is or maybe just dont use it at all if you only wanna check None types
Or do you just learn that as you go
thank ya
it does yes
== checks the value of the object while is checks the identity of the object
not quite it checks the id of the object
if data == None:
if data is None:```
Mean the same?
nope
!e print(0 == False, 0 is False)
@slate swan :white_check_mark: Your eval job has completed with return code 0.
001 | <string>:1: SyntaxWarning: "is" with a literal. Did you mean "=="?
002 | True False
Lol i was telling it with example
see how the first on is true and the second one is false

ooh == checks the value is sets the value
no no

here if you didnt know 0s bool value is False, see the value is equal because 0 is False and False is equal to False and the second one is False because 0 isnt exactly the bool type False
how tf do i do that lmao
Usually We Use is for Nonetype object
NoneType*
π
is checks if the object is the same object in the memory. So the same exact instance. == calls the __eq__ method which usually checks if a value is the same
π
So if you want to set a value to None then you just do Value = None
it should check if 2 objects are representationally the same
Sometimes they won't literally be the same, take some discord models for example. A discord.Member, at 2 different times, may not necessarily be the same (left guild, got new roles, changed name, etc) yet discord.py implements it in such a way that it is still the same (most likely by ID)
You can also just do something completely goofy like
def __eq__(self, other):
print("this is silly")
return False
so in this example, using is is better
Generally is is used for checking NoneType as it's a singleton iirc
If you want to be shorthand, you can just do something like
noneVar = None
if not noneVar:
print("None!")
That may be less readable to some, you be the judge of that
ah i see graci
but at the cost of speed
when Not none! Prints only when noneVar is infact None
Infect
That means == is comparing between the variables and is checks the value
"is" checks identity
Yeah
!d is
it seems you used json as a function name, overwriting json module
just change the function name to something else
Barely
its my time not yoursπ‘ π
you do with your time however you please
exactly π‘
Where chat
gone
like your ...
π
π³
Chill go take some sleep
How can I do like
If the user who sent the message if his id is in particular file then bot would do stuff
Like if user name/id in .file do this if not do this
What's ur file
I mean where u store ids
For the on_message event
ids.txt
https://media.discordapp.net/attachments/971701505948282890/981217653077213294/chart.png
Guys my bot is sending me wrong response it's sending me message info but it should send the labels
Can anyone help me fix it?
Pls anyone help
with open("ids.txt") as w:
if "hi" in w.readlines():
print("its there")
else:
print("not there")
try it not sure tho
@slate swan
Do message.content
import discord
from discord.ext import commands
from matplotlib import pyplot as plt
import numpy as np
def check(msg):
return msg.author.id == ctx.author.id and msg.channel.id == ctx.channel.id
class pie(commands.Cog):
def __init__(self, bot):
self.bot = bot
@commands.command()
async def pie(self ,ctx):
def check(msg):
return msg.author.id == ctx.author.id and msg.channel.id == ctx.channel.id
initial = 1
cars = []
await ctx.send("enter number of labels")
nop = await self.bot.wait_for('message', check=check,timeout=20)
nov = int(nop.content)
while initial<=nov:
await ctx.send("enter the value of pie chart to append")
apens = await self.bot.wait_for('message', check=check,timeout=20)
cars.append(apens)
initial = int(initial+1)
initials = 1
data = []
await ctx.send("enter number of data")
nops = await self.bot.wait_for('message', check=check,timeout=20)
novs = int(nops.content)
while initials<=novs:
await ctx.send("enter the values of labels according to order!")
apenss = await self.bot.wait_for('message', check=check,timeout=20)
apenss = int(apenss.content)
data.append(apenss)
initials = int(initials+1)
fig = plt.figure(figsize =(10, 7))
plt.pie(data, labels = cars)
plt.savefig("chart.png")
await ctx.send(file=discord.File("chart.png"))
async def setup(bot):
await bot.add_cog(pie(bot))
Guys i made a command which can send pie charts as well as we can make charts but my bot is not sending things in list [cars] instead it's sending me things in the above pie chart image
Can anyone help me
Done
Let me run it
Bruh why message.content cause i have assigned it a variable called aseff and did aseff.content
At βhiβ I can use ctx.author.id?
See apens
it's doesnt have .content
Oof
it's not a slap it's a hand wave π
Ye?
I'll ackowledgingly ignore this
Does the footer field of an embed support masked links?
Because WAIT FOR return message object
sry for caps
Because: Every message (for example this message) contains a whole lot more data than just me writing this message and you seeing the words (content of the message), there's author id (my id) embeds, though user accounts cant send any, attachments, which are a held by an ideal data class which has all the propertied that represent these models, so using .content returns the content of the message, as its a property in that class which can be accessed to see the content of the message, same goes for attchments, embeds, etc.
π³ paragraph
Oh like lol = []
And i take input and the lol will also contain message components and message so i need to sort it by .content
Am i right?
dead on
What
yes it does iirc, and they are hyperlinks, not masked
is value required then?
@slate swan thank u bro
yes.
My pie chart command is finished finally
π
Wow cool
it seems it doesn't
blocking command uwu
eh, sure?
Now I'll use PIL and add borders and some cool fonts and text
bot.remove_command("uwu")
yeah it didn't make it a hyperlink
weirded
I thought they weren't supported
and you needed to just add field
I started learning pillow but can't understand the docs π
π
does it support hyperlinks in the name?
no.
I need an invis name then
just pass ** ** to the name
..?
I just copied some invisible character online
It seemed to work
totally your wish
do you know of any interesting rest apis
some random api? maybe
Same but stackoverflow is a cool website they put code there any i copy lol
Ive done almost all of them π€£
open api?
I want to use Oxford api but don't know how to
what's that
supports a number of endpoints, just search it up
oxford api for?
what's the site link?
gotta search it up brb
arent there other apis for that
For what
cant find the link rn, sorry
is it just openapis.org?
no., but you can search the website rapidapi for a number of apis , im sure of that one
What
sparky confused
I mean in embed we use this
yes I know
for a hyperlink
uh
nvmd
he aint wrong
does anyone know of any weather apis that dont require api key
Bruh π
why would you not want a key though?
I dont like hassling with them even though I know its easy
okay...
Guys why this is coming when i run my bot?
replit issue
I found this sick api of other apis, https://api.publicapis.org/entries
literally is an api with lists of other apis
There is a GitHub repo too
send
Sweet!
Guys how can we use light blue color in pil for sending image in dpy
is this correct ?
avatar = BytesIO(await user.avatar.url_as(size=128).read())
isn't the default size of avatar 128?
I using bytesio but still don't know it's use :(
Sure
Is there anything like a channel.followup_send(...) etc
Or is it just channel.send(...)?
.bm
For slash commands?
!d discord.Interaction.followup
Returns the follow up webhook for follow up interactions.
Do interaction.followup.send
@obtuse obsidian, please enable your DMs to receive the bookmark.
uhh
How would you whitelist the command usage when using .purge()
So it doesn't delete the message that used the command
await purge(*, limit=100, check=..., before=None, after=None, around=None, oldest_first=False, bulk=True, reason=None)```
This function is a [*coroutine*](https://docs.python.org/3/library/asyncio-task.html#coroutine).
Purges a list of messages that meet the criteria given by the predicate `check`. If a `check` is not provided then all messages are deleted without discrimination.
You must have the [`manage_messages`](https://discordpy.readthedocs.io/en/latest/api.html#discord.Permissions.manage_messages "discord.Permissions.manage_messages") permission to delete messages even if they are your own. The [`read_message_history`](https://discordpy.readthedocs.io/en/latest/api.html#discord.Permissions.read_message_history "discord.Permissions.read_message_history") permission is also needed to retrieve message history.
Changed in version 2.0: The `reason` keyword-only parameter was added.
Examples
Deleting botβs messages...
grraci
check=lambda msg: not msg.startswith(bot.command_prefix) or smth
Tf does that even mean
Yes, sorry.
I'm trying to send an embed for a for-loop in a channel but when I do it, it sends multiple. Unsure how to fix it, tried different embeds.
Wym it sends multiple?
PogFrog, a Frog that is simply just poggers.
Instead of sending one giant one, it just sends multiple.
So, it's in the loop but when I take it out, it only sends the first item.
Great transition of mine from a Hunter to a Frog lmao
thanks :)
!paste
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.
!join is what u r looking for ig
Joining Iterables
If you want to display a list (or some other iterable), you can write:
colors = ['red', 'green', 'blue', 'yellow']
output = ""
separator = ", "
for color in colors:
output += color + separator
print(output)
# Prints 'red, green, blue, yellow, '
However, the separator is still added to the last element, and it is relatively slow.
A better solution is to use str.join.
colors = ['red', 'green', 'blue', 'yellow']
separator = ", "
print(separator.join(colors))
# Prints 'red, green, blue, yellow'
An important thing to note is that you can only str.join strings. For a list of ints,
you must convert each element to a string before joining.
integers = [1, 3, 6, 10, 15]
print(", ".join(str(e) for e in integers))
# Prints '1, 3, 6, 10, 15'
indents, you probably have the send method inside the loop
https://paste.pythondiscord.com/tisodokewe
Here's the code, if you wanna check.
and indenting is the issue as expected.
Where
It works perfectly fine when I just have it send in a text format but when I do an embed, it doesn't work. I'm gonna check both π
await channel.send
Ah, mb
What is check == lambda msg: doing?
and....create_text_channel already returns a TextChannel object, there's no point getting/fetching again
The only time I see lambda is with list or somethin
lambda is a way to create one line functions. U can also use a def but I prefer lambdas for those kwargs
oh I see
!d lambda
An anonymous inline function consisting of a single expression which is evaluated when the function is called. The syntax to create a lambda function is lambda [parameters]: expression
Sorry, I'm still new.
I did channel = bot.get_channel(channel.id) to get the ids for each channel.
There's 16 different service_ids and I just thought I needed to specify channel.id for it
await channel.purge(check=lambda msg: msg.id != ctx.message.id)```
So, I don't understand fully.
When I don't have an embed, it sends fine.
await channel.send(value)
When I add one, it sends multiple values instead of one giant embed. What would I need to do then?
oh wait nvm
@commands.command(invoke_without_command=True, aliases=['UI', 'uinfo', 'info', 'ui'])
async def userinfo(self, ctx, *, user:discord.Member = ''):
if user == '':
user = ctx.message.author
if isinstance(user, discord.Member):
role = user.top_role.name
if role == "@everyone":
role = "N/A"
voice_state = None if not user.voice else user.voice.channel
if True:
em = discord.Embed(timestamp=ctx.message.created_at, colour=0x2F3136)
em.add_field(name='**User ID**', value=user.id, inline=True)
if isinstance(user, discord.Member):
em.add_field(name='**Nickname**', value=user.nick, inline=True)
em.add_field(name='**Status**', value=user.status, inline=True)
em.add_field(name='**In Voice**', value=voice_state, inline=True)
em.add_field(name='**Game**', value=user.activity, inline=True)
em.add_field(name='**Highest Role**', value=role, inline=True)
em.add_field(name='**Account Created**', value=user.created_at.__format__('%A, %d. %B %Y %H:%M:%S'))
if isinstance(user, discord.Member):
em.add_field(name='**Join Date**', value=user.joined_at.__format__('%A, %d. %B %Y %H:%M:%S'))
em.add_field(name=("Created on {} ({} days ago)".format(user.created_at("%d %b %Y %H:%M") (ctx.message.created_at - user.created_at).days)))
em.set_thumbnail(url=user.avatar.url)
em.set_author(name=user, icon_url=user.avatar.url)
await ctx.send(embed=em)
raise CommandInvokeError(exc) from exc
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: TypeError: 'datetime.datetime' object is not callable
.format('%A, %d. %B %Y %H:%M:%S') why not use strftime?
userwill never be a discord.User since you typehinted it to Member
@client.command(aliases = ['clear', 'purge', 'delete'])
async def clear_chat(ctx, amount: int = 5, member: discord.Member = None):
if ctx.message.content.startswith(client.command_prefix):
print('Works')
else:
await ctx.channel.purge(limit = amount)
await ctx.send(f'{amount} messages have been cleared.')
So I was able to format the if statement with startswith, but it wouldn't actually change what it purges so it doesn't include that message, do I need to do something inside of purge() or am I suppose to use a for loop
just make a check
!d discord.TextChannel.purge
await purge(*, limit=100, check=..., before=None, after=None, around=None, oldest_first=False, bulk=True, reason=None)```
This function is a [*coroutine*](https://docs.python.org/3/library/asyncio-task.html#coroutine).
Purges a list of messages that meet the criteria given by the predicate `check`. If a `check` is not provided then all messages are deleted without discrimination.
You must have the [`manage_messages`](https://discordpy.readthedocs.io/en/latest/api.html#discord.Permissions.manage_messages "discord.Permissions.manage_messages") permission to delete messages even if they are your own. The [`read_message_history`](https://discordpy.readthedocs.io/en/latest/api.html#discord.Permissions.read_message_history "discord.Permissions.read_message_history") permission is also needed to retrieve message history.
Changed in version 2.0: The `reason` keyword-only parameter was added.
Examples
Deleting botβs messages...
the check kwarg
Oh I see
what does background task do?
Runs a code in background repeatedly
what code
The code u write?
Yea
what's the point of running it in the background repeatedly
to do repeated tasks, simultaneously with other stuff
any examples?
Well, how I use it as is- Suppose you have a database and u wanna update it with the latest data repeatedly, then u set a time of 15 min where the code will automatically update the db
oh that makes sense ty
!d discord.ext.tasks.Loop the docs have a few
class discord.ext.tasks.Loop```
A background task helper that abstracts the loop and reconnection logic for you.
The main interface to create this is through [`loop()`](https://discordpy.readthedocs.io/en/latest/ext/tasks/index.html#discord.ext.tasks.loop "discord.ext.tasks.loop").
That's also used to update your bot presence and showcase the current guild count
from discord.ext import tasks
channel = bot.get_channel(id)
@tasks.loop(seconds=59)
async def uwu():
await channel.send(...)
uwu.start()```
ok ty
this will never work
imports ik
noo
channel variable is None
idc meh, just an example
πfine
but why would it be None
cause a global level get_x method will return None as the cache has not been setup yet
oh uhh yeah my bad
and it will be a static variable ( with get called only once)
await ctx.channel.purge(limit = amount, check = lambda msg: not ctx.message.content.startswith(client.command_prefix))
So here's what I tried, doesn't really work if you see something obvious
channel = asyncio.run(bot.fetch_channel(id))
seems cool
I tried changing some stuff around but couldnt find it 
@stiff fern ^
over-complicated isnt it
i suppose so
self.ws (on the bot instance) is still None, so it will raise attribute error
okay dpy sucks
No harm in getting the channel in the task itself and adding a wait_until_ready at the top
Hi there icy
why do people know me as icy, but hi
Lmao cz it was a better name
okay 
I tried to get this to work, I'm unsure how to. Can you help me with it in my code?
Have u read the tag on how to use join?
I just checked out what you sent me, I didn't understand it, so, I pulled up a video.
I'm unsure how it would work in my code though to make it work.
Ah so can you paste the for loop here?
Will do, do you want the entire code or just the bottom part?
Just the bottom
for player in response["data"]["players"]:
if player["online"] == True:
output_str_a = player["name"]
channel = bot.get_channel(channel.id)
embed = nextcord.Embed(description=output_str_a)
await channel.send(embed=embed)
not msg.content.startswith..
still buggychannel = bot.http.get_channel(id)
I did msg.startswith but it said it needed content or something
cnl = bot.get_channel(...)
await cnl.send(", ".join(player for player in response[][] if player["online"]))
huh? so you can send a message without running the bot too?
Fill in the dict keys please
why not, thats how rest works
the gateway is meant just to recieve events
oh wait, im high, idk what im saying anymore
for player in response["data"]["players"]:
if player["online"] == True:
output_str_a = player["name"]
channel = bot.get_channel(channel.id)
await channel.send(", ".join(player for player in response["data"]["players"] if player["online"]))
Like so?
Nice
How can I make this in python
I need it to save user data
and send them in a channel
and delete this data after the message was sent already
Guys how can we display in how many servers our bot is on website?
!d discord.Client.guilds
property guilds```
The guilds that the connected client is a member of.
!d json
Source code: Lib/json/__init__.py
JSON (JavaScript Object Notation), specified by RFC 7159 (which obsoletes RFC 4627) and by ECMA-404, is a lightweight data interchange format inspired by JavaScript object literal syntax (although it is not a strict subset of JavaScript 1 ).
json exposes an API familiar to users of the standard library marshal and pickle modules.
Encoding basic Python object hierarchies:
What do I ahve to do for it?
I think i cant do it in html?
with raw html no, you would have to make requests to the api to get server list payload, since server count data is dynamic
Which api?
Discord ofcourse
Or i need to make my own api?
I tried it's sending as an image not gif for some reason
Hmmm ig it would be hard i never did it
Pokemon?
api.popcat.xyz/pet?image={imagelurl}
@slate swan will you help me do the website thing pls?
i have no experience with web dev,sorry
No with discord api
embed.set_image(url="https://api.popcat.xyz/pet?image={}".format(replace)) I tried this.
That you told here
anyone know how to make mass ping detection?
Bruh πΆ
!d discord.Message.mentions
A list of Member that were mentioned. If the message is in a private message then the list will be of User instead. For messages that are not of type MessageType.default, this array can be used to aid in system messages. For more information, see system_content.
Warning
The order of the mentions list is not in any particular order so you should not rely on it. This is a Discord limitation, not one with the library.
whats the replace variable here?
You still need html to make websites
replace = av.replace("webp", "png")
Ik about making i have already made
But i want to display my bot guilds on my website but don't know how to
well you request a png why would you get a gif?
or does the api do that, lemme check
the api makes it into a gif
@slate swan here's an example link https://api.popcat.xyz/pet?image=https://cdn.discordapp.com/avatars/869395298626187324/be6b9bf19f34ddca6f0e092ef78d2be5.png
on the site it shows as a gif
im assuming thats because of the .png extension
try reading the response from the website and using those bytes for set_image
How would I do that
!local-file
Thanks to discord.py, sending local files as embed images is simple. You have to create an instance of discord.File class:
# When you know the file exact path, you can pass it.
file = discord.File("/this/is/path/to/my/file.png", filename="file.png")
# When you have the file-like object, then you can pass this instead path.
with open("/this/is/path/to/my/file.png", "rb") as f:
file = discord.File(f)
When using the file-like object, you have to open it in rb mode. Also, in this case, passing filename to it is not necessary.
Please note that filename can't contain underscores. This is a Discord limitation.
discord.Embed instances have a set_image method which can be used to set an attachment as an image:
embed = discord.Embed()
# Set other fields
embed.set_image(url="attachment://file.png") # Filename here must be exactly same as attachment filename.
After this, you can send an embed with an attachment to Discord:
await channel.send(file=file, embed=embed)
This example uses discord.TextChannel for sending, but any instance of discord.abc.Messageable can be used for sending.
Does discord just not embed it correctly
Even the example doesn't embed as gif in discord
https://api.popcat.xyz/pet?image=https://cdn.popcat.xyz/avatar.png
the example the API provides.
can you try to figure it out? @slate swan
What happened @slate swan
the api doesn't seem to embed as a gif
Show code
all of it?
The embed code
embed = discord.Embed(title=f"Pet!", color=discord.Color.blue())
av = str(user.avatar_url)
replace = av.replace("webp", "png")
embed.set_image(url="https://api.popcat.xyz/pet?image={}".format(replace))
await ctx.send(embed=embed)
on browser it's a gif but on discord it'snot
https://api.popcat.xyz/pet?image=https://cdn.discordapp.com/avatars/869395298626187324/be6b9bf19f34ddca6f0e092ef78d2be5.png
BTW why you using a third party API to get the avatar url
I'm not?
u want to set user avatar image in set_image?
the result link
u can just do embed.set_image(url=user.avatar.url)
Yea
no this would be the avatar url not the final link

Hey @valid panther!
You either uploaded a .txt file or entered a message that was too long. Please use our paste bin instead.
wut is final url
https://paste.pythondiscord.com/uzeveqiwaj
can anyone breif about this error
This is the final link
u tired to connect to ur db in mongodb and it was refused from what i gather
final link as in I meant the api
I mean, if u use avatar.url in embed, it will show yr avatar
if you don't have a discord default avatar*
ur ip set in atlas etc prolly ur public ip u set is different from ur current public ip
as they keep changing
yeah but generally changes
no.
I meant to say, if u use the avatar url attr, it will always show the avatar in the embed but yea
ur modem assigns u a ip on ipv4 which u give for public ip or access ip in mongo
Public IP changes with a flick of modem's power button
u can set a static IP by contacting ur provider tho
No need to do so, there's an option in Network settings iirc
ipv4 u would prolly need to pay ipv6 u can get for free
depends on the modem company provider etc
Indeed
BTW there's a button in Atlas Mongo. It will add yr current IP to the whitelist
U might want to use that
lmao u can just add 0.0.0.0
that will give access to db regardless ip
how to send like this
Ah, never knew
as long as u have correct password and stuff
!d discord.utils.format_dt
discord.utils.format_dt(dt, /, style=None)```
A helper function to format a [`datetime.datetime`](https://docs.python.org/3/library/datetime.html#datetime.datetime "(in Python v3.10)") for presentation within Discord.
This allows for a locale-independent way of presenting data using Discord specific Markdown...
Imagine tryna authenticate using the wrong pass
ik rightπ
Happened with me once. Caps vs cAPS
mongo is pretty good would be better if it were free atleast more than one cluster per project
i think i missed a special character once
U can always get a free tier VPS and host an instance of Mongo yourself
Hahaha
I hate it when that happens
lmao it took me a long time to realise
U press the key but it doesn't get presses properly
yeah like sometimes i click caps on shift or tab
What's the topic going on
BTW did u know u can show movie trailers on yr Rich Presence π€£
Infinity Wars trailer was running on mine yesterday
oh what's today end game?
Lol
spoilers
Sure, if u want. The final battle scene of Infinity Wars π
(Ignore the presence name)
Custom presence ?? self bot???
That's iron man
No, it complies with Discord ToS
how?
Also self bots and bots can't have pics in their presence
!pypi pypresence

i need to watch multiverse of madness
dont
but online quality is bad
y?
Let's stream it on RPC
its the shittiest marvel movie
Cool
Guys how can we make !eval command like @unkempt canyon
Me not able to understand from its GitHub repo
!d exec
exec(object[, globals[, locals]])```
This function supports dynamic execution of Python code. *object* must be either a string or a code object. If it is a string, the string is parsed as a suite of Python statements which is then executed (unless a syntax error occurs). [1](https://docs.python.org/3/library/functions.html#id2) If it is a code object, it is simply executed. In all cases, the code thatβs executed is expected to be valid as file input (see the section [File input](https://docs.python.org/3/reference/toplevel_components.html#file-input) in the Reference Manual). Be aware that the [`nonlocal`](https://docs.python.org/3/reference/simple_stmts.html#nonlocal), [`yield`](https://docs.python.org/3/reference/simple_stmts.html#yield), and [`return`](https://docs.python.org/3/reference/simple_stmts.html#return) statements may not be used outside of function definitions even within the context of code passed to the [`exec()`](https://docs.python.org/3/library/functions.html#exec "exec") function. The return value is `None`.
Idk how to make it :(
very
exec is like Superman of python
thats why have to use a sandbox environment for stuff like this
how did u jump from pie chart to pydis bot 
!pip jishaku
A discord.py extension including useful tools for bot development and debugging.
Ye that
what does this do?
yeah what does different libraries do i use py-cord and i don't think i need to change
but it would be great to learn about others too
same thing in different way i suppose never used others from what i remember there is pycord nextcord hikari
disnake also ig
just adds more commands to your bot, like, music and async running of python code with some more features for the discord library too
Me done with that command ;-;
ooh it's kinda like plugin with extra features
A utilities plugin for the bot owner
i don't know if lavalink lags because of replit or some code irregularities
kind of
no?
although it only lags at specific time of the day
How can we make eval command can anyone tell pls?
That's the crux
@robust fulcrum
pip install jishaku
bot.load_extension("jishaku")
jsk py python code <- command for discord
Ok
Ngl jsk is good, but it doesn't let the person learn since u don't learn how to make diff commands like debug and eval, among others
so how can i fix it
In 99% of cases you don't need eval
U need it sometimes for debugging purposes (speaking from experience)
No, you don't
Uh?
its better to add 0.0.0.0 (make it accessible from any ip)
ik i said that before up
Will it be
code = jsk py (pythoncode)
and?
idk how he wants it i told the classic how to solve it
try, jsk py 1+1 first
I don't think u will want to open the VPS and do changes directly to the deployed bot code, in order to debug. Since eval only does the changes in cache and not in real files, it's safe to use it if u r debugging an already deployed bot
Ok
Why not simply run code locally to debug it?

There are some bugs which u come across only when u deploy the bot on large scale
import geocoder
print(geocoder.ip("me"))
why not this π
nvm
For example?
whatsmyip does the same
and i don't need to type...
true
My bot resets the data for some servers randomly but this issue wasn't present while I was deving the bot since it's an edge case one. I was able to solve it using eval since I was able to see what is the value of some variable at a given point of time. This way I was able to figure out the issue without too much downtime and debug prints directly in the code
Seems like you're storing some data in memory or files, not the best way to do that
Where would I put bot.load_extensuon
At on_ready?
uhhh which dpy version?
Asher will help
2.0 i think he has...
same way how u load cogs in the async with bot: part
I think you can load cogs and extensions before async with block
yeah u can
2.0
Me asking do i need ti make file jishaku in cogs?
Jishaku confusion!
You put nothing in on_ready, basically all you put there is indicating that the bot is ready.
just add bot.load_extension in async with bot part before the bot.start line
its just one extension no need to make another async function block
How else you're going to load them without running in an async function?
I usually run it like this:
async def create_bot() -> commands.Bot:
intents = discord.Intents.default()
intents.message_content = True
intents.members = True
bot = commands.Bot(
command_prefix=settings.bot.prefix,
intents=intents,
)
return bot
async def main() -> None:
import app
import settings
bot = await app.create_bot()
async with bot:
await bot.start(token=settings.bot.token)
if __name__ == "__main__":
dotenv.load_dotenv()
asyncio.run(main())
I don't use bot.start
Me use bot.run
Why are you not using Intents.all()?
Because i don't really need presence, so i'm not using all()
ew
?
Okay then why not ```py
intents = discord.Intents.all()
intents.presences = False
correct me if i am wrong but isnt load_extension now async so all cogs loading have to be async?
Cogs already were async π€
like
await bot.load_extension('')
load_extension and add_cog are async now
They weren't.
in 1.7.3 it was def
oh really?
yeah
#1.7.3 was
bot.add_cog(Greetings(bot))
#2.0 is
await bot.add_cog(Greetings(bot))
cogs were async, if you're talking about add_cog method then say add_cog method π
But yep, these two methods were sync
so all cogs LOADING have to be async - I can't read sometimes
yeah for 2.0
you could make them synced too if you monkey patch dpy
u prolly know the whole tech tree of dpy
They're calling some async methods inside, so i wouldn't do that really
Also what's wrong?
why even create a special function for creating a bot, subclass Bot instead
Because it's easier
is creating or declaring bot instance without subclass bad?
its not bad...
I mean he isn't really adding anything to Bot so subclass is a bit over the top.
@slate swan Where would you load extensions and cogs then?
setup_hook
so why not just do bot=commands.Bot isnt that easier?
it is easier but if you want special functions for your bot, then sub-classing is better
yeah true
What kind of functions?
maybe like a property that returns the uptime of the bot
totally up to your code structure
yeah
I do loads of things inside the subclass Bot.
but sub classing does make the code look cooler and more structured
like?
Don't think that's something you need often, also it could break if you run multiple shards in different containers
Database, loading Groups, syncing, custom close function for http client, start-up datetime object and getch functions.
just an example.
Yeah, in this case subclassing it is better
Can anyone tell how can I use jishaku?
Not able to understand it
understand what?
How can I use it's extension
idrk never used i have to read the docs...
It's docs is very hard
this is what I actually do in my BotApp subclass ^

Ig me should see more python videos from youtube
IMO think you should store your env somewhere else
my env?
env variables
Hmm hey ash can you tell where I have to load extension?
elaborate why?
For example you can use pydantic
class BotSettings(BaseSettings):
class Config:
env_prefix = "bot_"
prefix: str = "!"
token: str
i'll be fine
I don't think you should store all of this in your bot, that's all
whats diff between os.environ and os.getenv?
os.getenv is the same as os.environ.get
hm, but I do need them in different extensions, that's just unnecessary imports
You can store settings instance on your bot too
they're the same, just that, os.environ returns a dictionary of env variables
uhh I'll be fine
What could you recommend to ensure that a user has an account in db before executing a command?
I'm currently using something like this:
async def ensure_account(session: AsyncSession, user: Member) -> Account:
account: Account | None = await session.get(Account, user.id)
if account is None:
account = Account(id=user.id)
session.add(account)
return account
Literally any vps
I don't even host it, sheesh
yeah i do something similar
you could actually change if account is None to if not account, its slightly faster but doesn't make much of a different
also this, why
Hmm pls tell how can I make eval command without jishaku
like a few microseconds
i'll be fine
whatever suits
btw u guys know any good examples for selection drops the ones in the docs arent so good?
__bool__ method could be overridden, so it's better to use is None if you're checking for none specifically
Otherwise code like this might not work properly:
def example(number: int | None):
if not number:
...
hm interesting
There are some cases when you need to do something like this:
_unset = object()
def example(number: int | None = _unset):
if number is _unset:
...
i see
thatβs interesting
import discord
from discord.ext import commands
from discord import ui
class BaseDropDown(ui.Select):
def __init__(self):
select_values = [
discord.SelectOption(label = "Yes", description = "Choose Yes."),
discord.SelectOption(label = "No", description = "Choose No.")]
super().__init__(placeholder="Confirm", max_values=1, min_values=1, options=select_values)
async def callback(self):
await interaction.response.send(f"You chose {self.values[0]}") #values is inherited from Select and is a list of options that were selected from the dropdown
class DropDown(ui.View):
def __init__(self):
super().__init__()
self.add_item(BaseDropDown())
@Bot.command()
async def _(ctx: Context):
await ctx.send("uwu", view=DropDown())
i use if not way too often
hmm
if not is definitely the way to go with containers (lists, dicts, etc), but for None i prefer comparing them by identity
thx lemme have a lookβ€οΈ
welcome, just on a side note, if you dont want to subclass View to add the drop down, you could simply instantiate it in a variable using view = ui.View() and view.add_item(BaseDropDown()) in that case, and you could add a timeout if necessary in the View class's initiator function
import discord
from discord.ext import commands
from discord.ui import Select, View
from discord import SelectOption as OP
async def callback(inter):
pass
@bot.slash_command()
async def test(inter):
select = Select(options=[OP(), OP()], callback=callback)
view = View()
view.add_item(select)
await inter.response.send_message(view=view)
slash command
without subclassing
subclassing is cleaner
I'd say if you have static ui elements it's cleaner to subclass, otherwise i would make async def create method in case you need to access db and stuff
yeah ik that part so if I want to send an embed on callback that will be in the interaction.response.edit_message?
only if the options are less, same
yeah
um yeah
I hate dpy now
!d discord.Interaction
class discord.Interaction```
Represents a Discord interaction.
An interaction happens when a user does an action that needs to be notified. Current examples are slash commands and components.
New in version 2.0.
!d discord.InteractionResponse.edit_message
await edit_message(*, content=..., embed=..., embeds=..., attachments=..., view=..., allowed_mentions=...)```
This function is a [*coroutine*](https://docs.python.org/3/library/asyncio-task.html#coroutine).
Responds to this interaction by editing the original message of a component or modal interaction.
oh
ok cool so in the interaction embed if i add buttons and have the same selection drop user will be able to shuttle thru embeds here right? buttons are for pagination btw
wait can you have multiple ui items in one message
yeah they'll work
multiple ui items in a view - yes, multiple views in one message - i don't know, probably not
it's like i have 3 category under which category i have a few embed with pagination
*in a view
π₯° π
yes
Yep
what i am doing is like a combo of both ig...
just make a SelectMenu object then add it in the same view which subclasses View and add the dropdown object in that View class
and the buttons
yeah cool thx a lot again
welcome, I'll go to sleep now, good night
gn sweet dreams
Guys can anyone pls help
Can we make eval command without jishaku
yes you can.



