#discord-bots
1 messages · Page 514 of 1
Show it
omg silliest error ever!!!!!!!!!
anyone familiar with subclassed dropdown and view?
@sly hamlet convert the answer to a list first, then use random.choice on it
That should raise an error
Show your error handler
its actually rlly full
i have an error logs file
Unclosed client session
client_session: <aiohttp.client.ClientSession object at 0x7f5f1869d850>
Unhandled exception in internal background task 'member_update'.
Traceback (most recent call last):
File "/usr/local/lib/python3.8/dist-packages/discord/ext/tasks/__init__.py", line 101, in _loop
await self.coro(*args, **kwargs)
File "/root/chad/cogs/vote.py", line 34, in member_update
dt_string = now.strftime("%-H")
NameError: name 'now' is not defined```
searcged for dt_string
Ah
!src
thenx
@tasks.loop(seconds=20) # repeat after every 20 seconds
async def member_update(self):
now = datetime.now()
dt_string = now.strftime("%-H")
if int(dt_string) == 7:
date = datetime.strftime(datetime.now(), "%a, %d/%m/%Y")
data = [date, len(self.bot.users)]
with open("databases/members.csv", 'a+', newline='') as csvfile:
writer = csv.writer(csvfile)
writer.writerow(data)
date = datetime.strftime(datetime.now(), "%a, %d/%m/%Y")
data = [date, len(self.bot.guilds)]
with open("databases/servers.csv", 'a+', newline='') as csvfile:
writer = csv.writer(csvfile)
writer.writerow(data)
await asyncio.sleep(3600)```
Why is this not making csv files and writing?
I checked, time is 7
https://i.hdskins.de/yozI3/NAgEzOZa50.png/raw Hey, i want to check if someone is banned from my Discord so idk what i should write in value
Banned from Discord or Guild...?
guild
!d discord.Guild.bans
await bans()```
This function is a [*coroutine*](https://docs.python.org/3/library/asyncio-task.html#coroutine).
Retrieves all the users that are banned from the guild as a [`list`](https://docs.python.org/3/library/stdtypes.html#list "(in Python v3.9)") of [`BanEntry`](https://discordpy.readthedocs.io/en/master/api.html#discord.BanEntry "discord.BanEntry").
You must have the [`ban_members`](https://discordpy.readthedocs.io/en/master/api.html#discord.Permissions.ban_members "discord.Permissions.ban_members") permission to get this information.
just use discord.Guild.fetch_ban
U gotta iterate through these
no you dont
Or that, yea
iterating can be super slow
just fetching all bans can take 20 seconds for me 
Uhhh? Code
call it
you miss the () ig
how?
!d discord.Guild.fetch_ban
await fetch_ban(user)```
This function is a [*coroutine*](https://docs.python.org/3/library/asyncio-task.html#coroutine).
Retrieves the [`BanEntry`](https://discordpy.readthedocs.io/en/master/api.html#discord.BanEntry "discord.BanEntry") for a user.
You must have the [`ban_members`](https://discordpy.readthedocs.io/en/master/api.html#discord.Permissions.ban_members "discord.Permissions.ban_members") permission to get this information.
??
user object inside the bracket
it takes in a snowflake
Or u can do discord.Object(id)
if you have a user or member available, like ctx.author, you can use that
fetch ban search for a user in your ban list, guild.bans return the list of the banned user
How a banned user can invoke a command @vocal plover
Lmao
Everything is possible if you believe in magic 😂
in theory you could be banned during the execution of a command, thus making fetch_ban(ctx.author) return a value
realistically it wouldnt happen but i imagine at the scale of dyno, for example, it has happened a few times
possible if discord.Guild aint ctx.guild but a pre defined one , or anything like that
Well that s kinda a weird situation
nahh i have userinfo and want to say Banned: True or False
discord.Guild.fetch_ban(discord.Object(id))
how do you start a task in not cogs?
check if the fetch ban returns None or not and send true or false
on_ready event , or just create a asyncio loop
its okey with not found
not inside an on_ready
and what is an "asyncio loop"
Sure of that?
what is the correct way?
asyncio.create_task ?
I'm trying to help someone to make it work in non cogs
So when it raises not found the fetch returns something? Lol
each task is not necesserialy related to discord.py api res
self.tempm.start()
``` because this is what starts the task in cogs, but what about bot?
what?
its still bad to do stuff inside the on_ready
even if its not a task
mhh ;D
U can just define a task in the main.py file (where u run the bot) and do task.start()
¯_(ツ)_/¯
and in what function is that added in?
....?
where is that added in?
can you write me the line here in chat that i should use? ;D
no
I made discord bot in pycharm how can i keep alive it?
like outside the other functions or inside some function
server.. on your pc.. or anything else ;D
buy a vps, a raspberry pi or selfhost
so just task_name.start?
Buy a VPS or never stop it after launched 😂
Ok
ah I see, thx alot!
no
hi
Hi
embed.add_field(name='Banned', value=f'{}', inline=False)
can someone say what i should write here, i want to check if the user is banned from my disc or not
how do i check what channel a user has used a slash command in?
(i am using the dislash module)
what is the context on dislash?
my code so far(does not work):
@inter_client.slash_command(guild_ids=test_guilds,
description="E",
options=[Option("E", "E", required=True)])
async def lulxdhaha(inter, question):
channel = inter.guild.get_channel(894148199265210380)
if channel == "[#894148199265210380](/guild/267624335836053506/channel/894148199265210380/)":
#code here
else:
await inter.send("Use the bot commands channel to run this command", ephemeral=True)
@commands.command(help = "Set welcome text.\n*PERM_NEEDED = ADMINISTRATOR*", aliases= ["swt"])
@commands.check_any(commands.is_owner(), commands.has_permissions(administrator = True))
async def setwelcometext(self, ctx, *, text = None):
guild = str(ctx.guild.id)
try:
welcomechannel = self.Welcome[guild]
except KeyError:
welcomechannel = {}
welcomechannel["welcome text"] = text
self.Welcome[guild] = welcomechannel
self.saveFile(self.Welcome, "welcome.json")
await ctx.send(f"Welcome text set to **{text}**.")```
how do i member.mention in this text?
and it should convert to mention the member when triggered
then it should be inter.channel but im not sure
like:
if channel == inter.channel(894148199265210380):
that?
🤷
if inter.channel == channel:
but i want to specify the bot commands channel not just any channel
then define channel to the bot commands channel
done
you didnt undertood what i am asking for?
i do but idk how i would do that too
oh
new question.
would this command work?
await ctx.send(embed=embed), ctx.send(embed=skywar)
no?
Why?
Nope
U can instead use embeds
send(embeds=[embed, skywar])
await ctx.send(embed=embed)
await ctx.send(embed=skywar)
``` this would tho
or this
Thanks for ignoring me 🥲
LMAO
no problem 👍
is it introduced in 2.0?
No?
oh , never knew it was a thing
Haha it's okay
why do i get this???????????????
I want to make my discord bot log every server it joins then post the invite link to my server
How can I do that?
!d discord.on_guild_join
discord.on_guild_join(guild)```
Called when a [`Guild`](https://discordpy.readthedocs.io/en/master/api.html#discord.Guild "discord.Guild") is either created by the [`Client`](https://discordpy.readthedocs.io/en/master/api.html#discord.Client "discord.Client") or when the [`Client`](https://discordpy.readthedocs.io/en/master/api.html#discord.Client "discord.Client") joins a guild.
This requires [`Intents.guilds`](https://discordpy.readthedocs.io/en/master/api.html#discord.Intents.guilds "discord.Intents.guilds") to be enabled.
its not suggested to generate the invite link for that server tho
You can take that one step further by clicking on the docs, clicking the guild it gives you and looking at how to make an invite
is there a way to save a part of the code somewhere and get it from that and continue the command?
when the cmd is invoked
zzzz
import discord, import discord.ext
i tried
How can I implemented it into my code?
but i get warnings
I don't know where to start
oh it fixed now
nvm
@bot.event()
async def on_guild_join(guild):
It is an event
How you use depends on how you declared the bot
class Bot(discord.ext.commands.Bot):
# Your Code here
#somewhere
async def on_guild_join(guild)
or
my_bot = discord.ext.commands.Bot(prefix="+")
@my_bot.event:
async def on_guild_join(guild)
Did you install discord package with pip?
yes
Weird... Run pip freeze command on your shell
PS C:\Users\unkno\Desktop\Python Discord Bot> pip freeze
WARNING: Ignoring invalid distribution -ip (c:\python39\lib\site-packages)
absl-py==0.14.1
aiohttp==3.7.4.post0
astunparse==1.6.3
async-timeout==3.0.1
atomicwrites==1.4.0
attrs==21.2.0
backcall==0.2.0
cachetools==4.2.4
certifi==2021.5.30
chardet==4.0.0
charset-normalizer==2.0.6
clang==5.0
colorama==0.4.4
cycler==0.10.0
decorator==5.1.0
discord.py==1.7.3
flatbuffers==1.12
gast==0.4.0
google-auth==1.35.0
google-auth-oauthlib==0.4.6
google-pasta==0.2.0
grpcio==1.41.0
h5py==3.1.0
idna==3.2
iniconfig==1.1.1
ipython==7.28.0
jedi==0.18.0
keras==2.6.0
Keras-Preprocessing==1.1.2
kiwisolver==1.3.2
Markdown==3.3.4
matplotlib==3.4.3
matplotlib-inline==0.1.3
multidict==5.1.0
neat==0.4.1
numpy==1.19.5
oauthlib==3.1.1
opt-einsum==3.3.0
packaging==21.0
parso==0.8.2
pickleshare==0.7.5
Pillow==8.3.2
pluggy==1.0.0
prompt-toolkit==3.0.20
protobuf==3.18.0
py==1.10.0
pyasn1==0.4.8
pyasn1-modules==0.2.8
pygame==2.0.1
Pygments==2.10.0
pyparsing==2.4.7
pytest==6.2.5
python-dateutil==2.8.2
requests==2.26.0
requests-oauthlib==1.3.0
rsa==4.7.2
six==1.15.0
Snake==0.2
tensorboard==2.6.0
tensorboard-data-server==0.6.1
tensorboard-plugin-wit==1.8.0
tensorflow==2.6.0
tensorflow-estimator==2.6.0
termcolor==1.1.0
toml==0.10.2
torch==1.9.1
traitlets==5.1.0
typing-extensions==3.7.4.3
urllib3==1.26.7
wcwidth==0.2.5
WebOb==1.8.7
Werkzeug==2.0.1
wrapt==1.12.1
yarl==1.6.3
Ignore that error haha
ok
Lolz
I also got that today. It happens when incomplete uninstallation or something
soooooooooo what do i do?
What you want to do?
I m not familiar, in pycharm i have a library root where i chan check all the package i have installed
anyone?
You need the member object u want to mention
lets say hellow welcome to server, @member if i want this to be my text
will this work with member obj?
Use the Event on_member_join
i have it
oops i kinda filled the screen sorry
but i am trying to get the text for it
It looks like you didn't define the reason
i fixed the error i just had to switch from the stupid windows store python to normal
i did though:
async def ban(inter, user, reason="No reason provided"):
oh
In that event send a message to the channel you want to with member.mention in it
Your bot doesn t have permission to ban
ye but what is in some guild anyone want to mention the member in the sstart of the line. or somewhere in middle
read the message i gave it admin perms
What?
Ok but the error says that it doesn t have permission lol
Check better and rerun your code
aaaaaaahhhhhh
the @member can be anywhere in the text
It Will be where you write it
send(f"{member.mention} welcome")
Or
send(f"welcome {member.mention}")
well ia m trying to get a way of doing the {member.mention} inside the text itself.
What is this text?
.
have like
uh
ill give an example
!e ```py
text = 'hello {member}
print(text.format(member="me"))
oops
!e ```py
text = 'hello {member}'
print(text.format(member="me"))
@hasty iron :white_check_mark: Your eval job has completed with return code 0.
hello me
like that
Exactly
How tf do I make a discord invite
can anyone help me?
in #☕help-coffee
yes
i used format, not an fstring
you're going to make people input text like that text in the example
Please help
when somebody joins, grab the text and call format on it
why the fstring?
!d discord.TextChannel.create_invite
await create_invite(*, reason=None, max_age=0, max_uses=0, temporary=False, unique=True, target_type=None, target_user=None, target_application_id=None)```
This function is a [*coroutine*](https://docs.python.org/3/library/asyncio-task.html#coroutine).
Creates an instant invite from a text or voice channel.
You must have the [`create_instant_invite`](https://discordpy.readthedocs.io/en/master/api.html#discord.Permissions.create_instant_invite "discord.Permissions.create_instant_invite") permission to do this.
member.mention is already a string
hm
class string.Template(template)```
The constructor takes a single argument which is the template string.
can u help?
Btw it is better to create a permanent link and save it in a variable somewhere in your code
Finally thank you so much 😭
I'm dumb and that sounds like too much work
what
Lol just create a link yourself for your guild (click on your server -> invite -> create link -> set it permanent -> copy it)
Go to your code, create a variable invite and assign it to that link
All I want it to do is make a invite then send it to my discord server
Every time it joins a server
i am getting an error in my googletrans api module
i never used it
You won't find much here lol
x = link
await ctx.send(link)
embed.add_field(name='Banned', value=f'{}', inline=False)
can someone say what i should write here, i want to check if the user is banned from my disc or not
whats the error
I don t know what error is, try to reinstall the package
what are you using it in
#☕help-coffee please
You need the list of bans and check if the user is in that list, if it is, print it
And How i do that? can you call me the line?
on my disc server as a field for userinfo ;D
didnt we already tell you
!d discord.Guild.fetch_ban
await fetch_ban(user)```
This function is a [*coroutine*](https://docs.python.org/3/library/asyncio-task.html#coroutine).
Retrieves the [`BanEntry`](https://discordpy.readthedocs.io/en/master/api.html#discord.BanEntry "discord.BanEntry") for a user.
You must have the [`ban_members`](https://discordpy.readthedocs.io/en/master/api.html#discord.Permissions.ban_members "discord.Permissions.ban_members") permission to get this information.
that raises NotFound if the user isnt banned
Lol true, i m remembering now
!d discord.NotFound
exception discord.NotFound(response, message)```
Exception that’s raised for when status code 404 occurs.
Subclass of [`HTTPException`](https://discordpy.readthedocs.io/en/master/api.html#discord.HTTPException "discord.HTTPException")
how do i ban people with id?
i tried to make a anti phising bot
i didnt do this
thats the default help command
how can i change it?
u can disable the help commands
you can remove it by passing help_command=None to your Bot's constructor
ok
soo https://i.hdskins.de/yozI3/huGUlejo26.png/raw and what should i write in there? for user?
help_command=None
do you know the difference between a class and an instance
öhh
no? ;D
but how do i change the command not to none but to my own that is same but writes different stuff
then you should learn more python
thats one of the things you should know before using dpy
change it to None and then make another command named help
i know xd i learn but i want to finish this
you dont have enough knowledge to finish it
@sweet merlin
how i can fix that?
Bruh what? Hahahahaha
He doesn t need to do this, he can create a custom help command, is pretty easy
Bot not working
yeah thats an option too
thats the only thing that is missing bro xd
I don't know
that is js
when i write command in dm bot dont send on channel
Is essential to code bot, u re trying to do something but you have not idea of what that something is
ya
output?
And that makes hard to help you
?
whats the output?
@client.command(name='apomoc')
async def suggestion(ctx, *, message=' '):
if isinstance(ctx.channel, discord.DMChannel):
channel = client.get_channel(894168474425917450)
apomoclogs = discord.Embed(title="Potrzebna pomoc!", description=f"Informacje o graczu:\nNazwa użytkownika: {ctx.author.mention}\nID: {ctx.author.id}\nProblem: {message}")
apomocthx = discord.Embed(title=f"Dziękujemy {ctx.author}!", description="Dziękujemy, że pomagasz nam w rozwinięciu serwera NightCity.pl! Jeżeli masz problem, a musisz załączyć zdjęcia to pisz do naszej administracji otwierając Ticket lub na wiadomości pv!", color=0x00FF00)
await channel.send(embed=apomoclogs)
await ctx.author.send(embed=apomocthx)
else:
await ctx.send("Zrób to w wiadomości prywatnej!")
``` bot send message player on channel
is there a way to enforce reactions by users on msg from an msg which has reactions?
and not to custom channel?
channel = client.get_channel(894168474425917450)
can u help me?
with what?
it worked today morning
and the main problem is enother thing
no matter which version of googletrans i pip install it automatically updates in version 3.1.0a0
hmm i dont know sorry
how do i get all the member with a certain role?
@sweet merlin maybe u help me if u start
like .inrole @brisk nebulaame it rerturns the list of people who has rolename
whats the output of this embed?
d!discord.embed
bot dont send embed on channel?
oh
pls
are you using cogs?
no
I just noticed that yesterday i closed the IDE without waiting for the commit to finish 😭
!d discord.Embed
class discord.Embed(*, colour=Embed.Empty, color=Embed.Empty, title=Embed.Empty, type='rich', url=Embed.Empty, description=Embed.Empty, timestamp=None)```
Represents a Discord embed.
len(x) Returns the total size of the embed. Useful for checking if it’s within the 6000 character limit.
bool(b) Returns whether the embed has any data set.
New in version 2.0.
Certain properties return an `EmbedProxy`, a type that acts similar to a regular [`dict`](https://docs.python.org/3/library/stdtypes.html#dict "(in Python v3.9)") except using dotted access, e.g. `embed.author.icon_url`. If the attribute is invalid or empty, then a special sentinel value is returned, [`Embed.Empty`](https://discordpy.readthedocs.io/en/master/api.html#discord.Embed.Empty "discord.Embed.Empty").
For ease of use, all parameters that expect a [`str`](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.9)") are implicitly casted to [`str`](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.9)") for you.
Have you got any errors?
i dont see any error
...
help_command=None this didnt work
i put it at start
import discord
from discord.ext import commands
bot = commands.Bot(command_prefix='z')
help_command=None
@bot.command()
async def hello(ctx):
await ctx.reply('Hello!')
@bot.command()
async def HMAAW(ctx, *args):
await ctx.send('{} arguments: {}'.format(len(args), ', '.join(args)))
@bot.command()
async def SendMessage(ctx, *, arg):
await ctx.send(arg)
@bot.command()
async def ReplyToMe(ctx, *, arg):
await ctx.reply(arg)
@bot.command()
async def Help(ctx):
await ctx.reply(
"1. command = hello"
"2. command = HMAAW"
"3. command = SendMessage"
"4. command = ReplyToMe")
bot.run('my token here')
there is something error in your cogs birthday(?)
Lol i knew it, you have to write it after the command prefix in your bot variable
the birthday.py(?)
Why is your help command's reply like that? That's not how it works.
May I ask you, how long have you been using Python?
The cog is not loaded.
!d discord.ext.commands.Bot.load_extension
load_extension(name, *, package=None)```
Loads an extension.
An extension is a python module that contains commands, cogs, or listeners.
An extension must have a global function, `setup` defined as the entry point on what to do when the extension is loaded. This entry point must have a single argument, the `bot`.
might be
The error literally says it.
bot.unload_extension tried to unload an extension that was never loaded.
One moment.
https://github.com/ScopesCodez/discordpy-cogs check the cog_manage.py file, it has the commands you need.
Example for using cogs in discord.py. Contribute to ScopesCodez/discordpy-cogs development by creating an account on GitHub.
cogs/cog_manage.py line 42
await asyncio.sleep(0.5)```
also this wont give the full traceback https://github.com/ScopesCodez/discordpy-cogs/blob/main/cogs/cog_manage.py#L64
cogs/cog_manage.py line 64
value=e```
It raises the e afterwards.
then that defeats the whole point of sending it
I really don't know, I just felt like putting it there, haha.
For me, it's better to see the error before the traceback. Might know where the issue is before looking at the console?
The code was made by me for me, but I decided to make this public repo. Though, it was mainly feeding my needs since my PC isn't very good at handling switching from tab to tab the whole time, so I couldn't really switch from Discord, to the host's console on the browser, to my IDE.
doing value=e just gives the exception's __str__ which is basically nothing
Btw, I've got a question. Do you know how to make it send the full traceback? I've tried to find a solution for quite a while but couldn't find any.
you can use traceback.format_exception
e.format_exception?
!d traceback.format_exception
traceback.format_exception(exc, /, [value, tb, ]limit=None, chain=True)```
Format a stack trace and the exception information. The arguments have the same meaning as the corresponding arguments to [`print_exception()`](https://docs.python.org/3.10/library/traceback.html#traceback.print_exception "traceback.print_exception"). The return value is a list of strings, each ending in a newline and some containing internal newlines. When these lines are concatenated and printed, exactly the same text is printed as does [`print_exception()`](https://docs.python.org/3.10/library/traceback.html#traceback.print_exception "traceback.print_exception").
Changed in version 3.5: The *etype* argument is ignored and inferred from the type of *value*.
Changed in version 3.10: This function’s behavior and signature were modified to match [`print_exception()`](https://docs.python.org/3.10/library/traceback.html#traceback.print_exception "traceback.print_exception").
how do i get the bot to add a member.mention for a discord.Embed title or footer?
I've seen this before, and kept asking my self what am I going to define traceback as, or is it already defined somehow.
You can't.
you do traceback.format_exception(type(e), e, e.__traceback__)
peashe
Embed titles and footers don't take any markdown or mentions.
makes sense thenks you
it returns a list so join it
Thank you very much! Going to try it out right now.
Yeah, I've seen this in the docs.
Hello, please someone help me. I want to make the command when user find a bug, to type ".bug", then the bot to send himPlease explain the bug, then he need to explain the bug, after that the bot needs to send him Please provide pictures/videos of this bug and the user needs to send picture/video. But the problem here is that the bot does not understand it and don't send it. This is the code: ```python
@client.command()
async def bug(ctx, desc=None, rep=None):
user = ctx.author
await ctx.author.send('Please explain the bug')
responseDesc = await client.wait_for('message', check=lambda message: message.author == ctx.author, timeout=300)
description = responseDesc.content
await ctx.author.send('Please provide pictures/videos of this bug')
responseRep = await client.wait_for('message', check=lambda message: message.author == ctx.author, timeout=300)
replicate = responseRep.content
embed = discord.Embed(title='Bug Report', color=discord.Color.green())
embed.add_field(name='Description', value=description, inline=False)
embed.set_image(name='Replicate', value=replicate, inline=True)
embed.add_field(name='Reported By', value=user, inline=True)
adminBug = client.get_channel(892013869088788490)
msg = await adminBug.send(embed=embed)
await msg.add_reaction(":white_check_mark:")```
and this is the error discord.ext.commands.errors.CommandInvokeError: Command raised an exception: TypeError: set_image() got an unexpected keyword argument 'name'
!d discord.Embed.set_image doesn't have a name, value or inline attributes. It has only a url attribute.
set_image(*, url)```
Sets the image for the embed content.
This function returns the class instance to allow for fluent-style chaining.
Changed in version 1.4: Passing [`Empty`](https://discordpy.readthedocs.io/en/master/api.html#discord.Embed.Empty "discord.Embed.Empty") removes the image.
but how do i add the name then?
the name of what to what?
also replicate = responseRep.content this wont work for images/videos
you'll need to look at Message.attachments
hey how to use subproccess to instal any module?
the name='Replicate'
you cant
is there a way to get a list of loaded and unloaded cogs?
me?
thanks, i will try to see what i can do
i was talking to yxrdanoww_#9953
i like your about-me 😄
oh
how to use subproccess to instal any module?
holy fak the pings
!e
import traceback
names = [1, 2]
try:
print(names[5])
except Exception as e:
print("\n".join(traceback.format_exception(type(e), e, e.__traceback__)))
@dapper cobalt :white_check_mark: Your eval job has completed with return code 0.
001 | Traceback (most recent call last):
002 |
003 | File "<string>", line 4, in <module>
004 |
005 | IndexError: list index out of range
message = ctx.channel.get_message(<msg.id>)
```OR
```py
message = bot.get_message(894180307878707200)
```?
@hasty iron Got it, thanks! 
neither, its ctx.channel.fetch_message or ctx.channel.get_partial_message
!d discord.TextChannel.get_partial_message
get_partial_message(message_id, /)```
Creates a [`PartialMessage`](https://discordpy.readthedocs.io/en/master/api.html#discord.PartialMessage "discord.PartialMessage") from the message ID.
This is useful if you want to work with a message and only have its ID without doing an unnecessary API call.
New in version 1.6.
mine better 
yep jus went thru the docs thenks you tho
help
await it
i did
🤣
clearly didnt
show the full code would be better to point out what’s wrong
amm like the cmd is in main py so if one enters the cmd it goes to other py to run it
that is not happning

번역해서 idont under stand....
k
hey guys, I'm trying to create an "anti ping" command for example if I get pinged 3 times or more the bot deletes the message
this is the code, but it does not work
massping = 3
@ client.event
async def on_ping (ctx, message, massping):
if message.content.startswith ('@ ₪ • LovesCoding', +3):
await ctx.send (f "Hey {member.mention} Don't mess with the owner.")
await ctx.message_delete ()```
need some help
@slate swan jeez korean
yes
prooo
im korean
hm
File "/home/runner/My-BOT/COGs/help.py", line 16, in mga
channel = commands.get_channel(890186572501250098)
AttributeError: module 'discord.ext.commands' has no attribute 'get_channel
``` ??
Anyone help
try setting name to something except "balance"
Its on Bot iirc
do you mean bot.get_channel
Yeaaa
Its shown in the docs
self.bot
https://discordpy.readthedocs.io/en/stable/ext/commands/cogs.html?highlight=cogs
dope
hello everyone idk if its disocrd.py or just py but i would like my code to create a file, send it in dm with my bot and then take data from another file to put it in the one that was created
message.author.bot
returns bool
!d discord.Member.bot
property bot```
Equivalent to [`User.bot`](https://discordpy.readthedocs.io/en/master/api.html#discord.User.bot "discord.User.bot")
Use this to send the file:
await ctx.send(file=discord.File(r'c:\location\of\the_file_to\send.extension'))
Remember that file has restriction such as the size
Do \n and then a zero width space or so
these are fields
i dont think that works with fields
because you cant put an empty value in fields
ZWS isn’t an empty value
what are those
u\200b
both
As I already said before
and how u use them?
in the print (or send) just write u/ and the value
It's the escape to write utf-8 characters
but where?
...
Here
in the value or name???
It depends on you
Wherever you want your enter to be
It can go wherever you wamt
bro ive been coding for 3 hours my brain isnt working anymore
Want*
Then stop coding and take a break
deadline moment
If your brain is mush no matter what you aren’t going to make sensible code
If you have a deadline for a discord bot then you have some serious questions about what you are doing
Because that should never be the case
no i had a deadline for smth else
whats the best free python app or website on phone?
and i also put deadlines on my self because if i dont i will procrastinate
None
so like this?
is there an event to subscribe for getting users that who accept the terms for a server
No you wanted to add an enter to an already existing field not a new field
aight
Embeds.set_thumbnail(url)
!d discord.Embed.set_image
set_image(*, url)```
Sets the image for the embed content.
This function returns the class instance to allow for fluent-style chaining.
Changed in version 1.4: Passing [`Empty`](https://discordpy.readthedocs.io/en/master/api.html#discord.Embed.Empty "discord.Embed.Empty") removes the image.
Integrate your service with Discord — whether it's a bot or a game or whatever your wildest imagination can come up with.
ok
Probably yes, i don t know it to
You have to search it
Hey I wanna ask how to restrict the bot to dms only or server only?
Use the guild_only and DM_only checks on your command
what?
no
Those are all events that exist in the discord API
so how can I make a autorole bot? (except trying to add the role forever)
how can a bot send a embed
i meant like
if somebody sent a embed message the bot should send the same
like in a on_message but message.content is a embed and i want it to resend it
!d discord.Message.embeds
A list of embeds the message has.
Okay tyyy
on_reaction_add event or on_raw_reaction_add
does anyone know why my discord desktop icon become like this.
any ideas on how to make a music bot which doesn't have to download the music file before playing it?
like stream from YT
autorole is when someone joins the server
assign a role to them
Either with a reaction or with a member join event
not reaction role
then on_member_join
guys help?
guys pls help me
That means OneDrive
Per Python Discord's Rule 5, we are unable to assist with questions related to youtube-dl, pytube, or other YouTube video downloaders as their usage violates YouTube's Terms of Service.
For reference, this usage is covered by the following clauses in YouTube's TOS, as of 2021-03-17:
The following restrictions apply to your use of the Service. You are not allowed to:
1. access, reproduce, download, distribute, transmit, broadcast, display, sell, license, alter, modify or otherwise use any part of the Service or any Content except: (a) as specifically permitted by the Service; (b) with prior written permission from YouTube and, if applicable, the respective rights holders; or (c) as permitted by applicable law;
3. access the Service using any automated means (such as robots, botnets or scrapers) except: (a) in the case of public search engines, in accordance with YouTube’s robots.txt file; (b) with YouTube’s prior written permission; or (c) as permitted by applicable law;
9. use the Service to view or listen to Content other than for personal, non-commercial use (for example, you may not publicly screen videos or stream music from the Service)
I tried that. but it doesn't assign the role until the member accepts the terms or something
oh ok then spotify will work
nope
Can sm1 help me PLEASE
its against their tos too
anyone?
this is my code
you have to use only ncs music or your own music
If someone has to accept that welcome screen, they aren’t part of the server yet
on_message, message.content (can message.content that is embed be resended?
message.content isn’t embers, message.embeds is embeds
if fetching the Spotify Music is against TOS then why API
yea same thing
If you read their TOS you know why there is an API
its not
hmm....
ok I'm dumb
Pfft
let me explain you, let's say someone sent a embed, now i want the bot to send that embed, it is possible?
fetching data != streaming music
makes sense
!d discord.ext.commands.guild_only
@discord.ext.commands.guild_only()```
A [`check()`](https://discordpy.readthedocs.io/en/master/ext/commands/api.html#discord.ext.commands.check "discord.ext.commands.check") that indicates this command must only be used in a guild context only. Basically, no private messages are allowed when using the command.
This check raises a special exception, [`NoPrivateMessage`](https://discordpy.readthedocs.io/en/master/ext/commands/api.html#discord.ext.commands.NoPrivateMessage "discord.ext.commands.NoPrivateMessage") that is inherited from [`CheckFailure`](https://discordpy.readthedocs.io/en/master/ext/commands/api.html#discord.ext.commands.CheckFailure "discord.ext.commands.CheckFailure").
what if I wanted to play NCS music
It clearly says if you have written permission from the service provider for exactly what you are doing you are allowed to use it
how would I do that
Ty
Do you have written permission from YouTube?
I need perms for NCS music also now?
Which most likely is a no because it’s impossible to get it because the API bypasses ads
@valid niche help?
NCS is no copyright music
ouch Music bots dead for real
You need written permission from youtube to use their API
there isnt an api for streaming music
But the YouTube API has terms saying you need written permission to use it
their api is a data api
Spotify?
well I'm gonna run the bot only on 1 server
Same thing
Why not? An embed is an embed
and it isn't gonna cause a lot of traffic diversion from YT
I see
This is the data API which the user wasn’t looking for. The full API that allows you to steam requires written permission, which almost no one gets because it bypasses advertisements
i got ignored
so imma ask again
https://paste.pythondiscord.com/erufotiloq.py
This is my code....
and i keep getting error
Task exception was never retrieved
future: <Task finished name='Task-442' coro=<Loop._loop() done, defined at /usr/local/lib/python3.8/dist-packages/discord/ext/tasks/__init__.py:88> exception=UnboundLocalError("local variable 'date' referenced before assignment")>
Traceback (most recent call last):
File "/usr/local/lib/python3.8/dist-packages/discord/ext/tasks/__init__.py", line 125, in _loop
raise exc
File "/usr/local/lib/python3.8/dist-packages/discord/ext/tasks/__init__.py", line 101, in _loop
await self.coro(*args, **kwargs)
File "/root/chad/cogs/vote.py", line 39, in member_update
with open("databases/members.csv", 'a+', newline='') as csvfile:
UnboundLocalError: local variable 'date' referenced before assignment
Unclosed client session
client_session: <aiohttp.client.ClientSession object at 0x7f76ea3547c0>
where did you find out about this
fetch_ban() missing 2 required positional arguments: 'self' and 'user'
Do !ytdl and read the mentioned TnC lines
will discord stop supporting Discord.py?
some people told me discord will stop supporting discord.py
!d discord.Guild.fetch_ban
await fetch_ban(user)```
This function is a [*coroutine*](https://docs.python.org/3/library/asyncio-task.html#coroutine).
Retrieves the [`BanEntry`](https://discordpy.readthedocs.io/en/master/api.html#discord.BanEntry "discord.BanEntry") for a user.
You must have the [`ban_members`](https://discordpy.readthedocs.io/en/master/api.html#discord.Permissions.ban_members "discord.Permissions.ban_members") permission to get this information.
and i think that is massive 🧢
yeah where did you find out about this "full api"
bro what
ik it was suprising to me too
discord.py isnt supported by discord - anyone can access the api
I see
no i was saying bro what because it’s completely infactual
YouTube Together does that not bypass ads?
@ocean steeple discord.py is now unmaintained and will not receive future updates anymore, you should move to a fork or find a different library
until April
for verified bots
Truw
ok ty
try hikari
ik
or something
bye
user doesnt work for me idk Wtf
@valid niche
The error is from a different bit of code
because you dont know enough python
It’s literally how the entire service works. The website also fetches from the API
yeah bro i will watch this after it works ;D
You need to pass in an ID of a banned user or a discord.User object
r u sure?
you cant pass in an id
And it's a coroutine so you need to await it
you need to pass in a snowflake
Don't IDs work?
Isn’t that the thing they want to integrate into discord? It’s youtube’s own thing so they are free to do whatever
you cant pass them directly
Well it says unbound local variable date, and there is no date in your code, only date1 and date2 etc
Well then how are you supposed to get a user object from a guild that doesn't include them as members anymore?
!d discord.Guild.get_ban
No documentation found for the requested symbol.
Whoops one second
im running it in a vultr vps idk whats happening
!d discord.Guild.fetch_ban
await fetch_ban(user)```
This function is a [*coroutine*](https://docs.python.org/3/library/asyncio-task.html#coroutine).
Retrieves the [`BanEntry`](https://discordpy.readthedocs.io/en/master/api.html#discord.BanEntry "discord.BanEntry") for a user.
You must have the [`ban_members`](https://discordpy.readthedocs.io/en/master/api.html#discord.Permissions.ban_members "discord.Permissions.ban_members") permission to get this information.
await bans()```
This function is a [*coroutine*](https://docs.python.org/3/library/asyncio-task.html#coroutine).
Retrieves all the users that are banned from the guild as a [`list`](https://docs.python.org/3/library/stdtypes.html#list "(in Python v3.9)") of [`BanEntry`](https://discordpy.readthedocs.io/en/master/api.html#discord.BanEntry "discord.BanEntry").
You must have the [`ban_members`](https://discordpy.readthedocs.io/en/master/api.html#discord.Permissions.ban_members "discord.Permissions.ban_members") permission to get this information.
@brazen raft
Send the code that is actually producing the error
Tbh you can just use bot.fetch_user and then guild.fetch_ban from it
Look at the traceback it will tell you where it’s coming from
i did
its complicated
but now it works so that is that
or just discord.Object?
Idk how, somehow the autorole thing worked
but it bypasses the rules acceptance
anyone know how to wait until the member accepts the rules?
It shouldn’t? You aren’t a member until you actually clicked accept
Unless discord is being funky again
it does trigger on_member_join event and it lets the role to be added to the user
I checked the logs
Oh that, well if they don’t accept they get kicked of the server
It’s just a discord quirk nothing to do about
The thing is only rendered on the client side and even closing discord and opening it again would bypass it I guess
Also don’t see it as a system where it will physically stop people from breaking the rules, it’s just like a terms and conditions thing when you sign up on a website
No one actually reads them and just clicks okay
Even if it includes selling your first born to the author so they can make a ritual sacrifice
I’m not even 20
Same
what is the limit of letters in embed messages?
6k
thx
Also if one wonders where I got this example from:
some know?
send error
how do i get the number of text channels and voice channels separate?
!d discord.Guild.text_channels
property text_channels: List[discord.channel.TextChannel]```
A list of text channels that belongs to this guild.
This is sorted by the position and are in UI order from top to bottom.
!d discord.Guild.voice_channels
property voice_channels: List[discord.channel.VoiceChannel]```
A list of voice channels that belongs to this guild.
This is sorted by the position and are in UI order from top to bottom.
how i remove field from embed?
thenks you mans
I'm trying to make my bot send message when someone joins the server
here's what I did
@bot.event
async def on_member_join(member):
await bot.get_channel(891126692494577685).send(f"{member.name} has joined.")
idk why this isn't working
error?
did you enable intents?
nope
!intents
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.
then do it
okay
someone knows?
on_member_join is priviledged to the members intent
!d discord.Embed.remove_field
remove_field(index)```
Removes a field at a specified index.
If the index is invalid or out of bounds then the error is silently swallowed.
Note
When deleting a field by index, the index of the other fields shift to fill the gap just like a regular list.
embed.set_image(url = ...)
thanks, it's working now
128
7
153
```these r wt m getting.....and ik my math...
Send the code
Ok I want to try a command again but it doesn't seem to work ? py @client.group(invoke_without_command=True) async def feedback(ctx, *, text = None): try: text = text.split("#") report=discord.Embed(color=0xfff868) report.add_field(name='Pending Confirmation', value=f"{text[1]} #Tittle \r {text[2]} #Description") await ctx.channel.send(embed=report,components=[[Button(style=ButtonStyle.red, label="Discard", custom_id="n"), Button(style=ButtonStyle.green, label="Send", custom_id="y")]]) except: await ctx.reply("Please enter `/feedback format` to check how to format.")
yes whats wrong
categories count towards channels
Now
Ignoring exception in command halloween2:
Traceback (most recent call last):
File "C:\Users\culan\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\ext\commands\core.py", line 167, in wrapped
ret = await coro(*args, **kwargs)
File "C:\Users\culan\OneDrive\Desktop\echo\cogs\pic.py", line 16, in halloween2
json_dict = json.load(f)
File "C:\Users\culan\AppData\Local\Programs\Python\Python39\lib\json\__init__.py", line 293, in load
return loads(fp.read(),
File "C:\Users\culan\AppData\Local\Programs\Python\Python39\lib\json\__init__.py", line 346, in loads
return _default_decoder.decode(s)
File "C:\Users\culan\AppData\Local\Programs\Python\Python39\lib\json\decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "C:\Users\culan\AppData\Local\Programs\Python\Python39\lib\json\decoder.py", line 353, in raw_decode
obj, end = self.scan_once(s, idx)
json.decoder.JSONDecodeError: Expecting ',' delimiter: line 4 column 5 (char 57)
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "C:\Users\culan\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\ext\commands\bot.py", line 994, in invoke
await ctx.command.invoke(ctx)
File "C:\Users\culan\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\ext\commands\core.py", line 894, in invoke
await injected(*ctx.args, **ctx.kwargs)
File "C:\Users\culan\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\ext\commands\core.py", line 176, in wrapped
raise CommandInvokeError(exc) from exc
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: JSONDecodeError: Expecting ',' delimiter: line 4 column 5 (char 57)
``` I'm not exactly sure what's going on here can anyone help here's the full file in this link
https://hastebin.com/oqejipucow.json
before
categories = str(len(guild.categories))
```is this valid
embed.set_image(url = "https://cdn.discordapp.com/attachments/846054799204024340/893964109710770227/image0.png")
explicit state what are you trying to achieve
Url needs to be a string iirc
I just wanted to work but everything inside that file looks fine to me
is it a json file
Yes
To send an image that is saved locally i use the path url to that image?
yes
You need to add r before your json string. did you do that ?
@commands.command()
async def halloween3(self, ctx):
with open("json/halloween.json", "r") as f:
json_dict = json.load(f)
answer = random.choice(json_dict['Things'])
author = ctx.message.author
em = discord.Embed(title="", description="", color=0x050505)
em.set_image(url=(answer))
em.set_footer(text=f"Echo discord bot")
await ctx.send(embed=em)```
Any command I sent through that file regardless of the command has that error
ok wait
Hello is the guild.created_at is in this format?
yyyy/mm/dd
what
trying to solve
Help pls
ok I got try using this as you json file if it doesn't work then tell me:https://hastebin.com/tutenoyeza.json
!d discord.abc.Guild.created_at
No documentation found for the requested symbol.
just print it out and look for it
!d discord.Guild.created_at
property created_at: datetime.datetime```
Returns the guild’s creation time in UTC.
No it does not work
That's too general, what you want?
Asking what? Lol
I need rep.lit script
https://rep.lit is a site I never heard of!
how would I send a message every hour on the hour
i've only used the on message event thus far
crontab or loop
ok then I have run your bot it work perfectly so I can't really help ? also try running the program it could be a formatting mistake
@sly hamlet
from aicron import crontab @crontab("0 * * * *") async def sendmsg(): await channel.send()
bot dont send embed
can you hep me understand line 2 of that
Try running the program what do you mean
again maybe a loading error also you don't need to read the json twice so remove r from here py with open("json/halloween.json", "r") as f: it should be py with open("json/halloween.json") as f: it worked for me that way maybe it will help you too.
since your reading the json file here: py json_dict = json.load(f)
@sly hamlet
ok
work ?
same error
Ya
so what I recommend is using py @client.command() async def halloween3(self, ctx): with open("json/halloween.json") as f: json_dict = json.load(f) answer = random.choice(json_dict['Things']) author = ctx.message.author em = discord.Embed(title="", description="", color=0x050505) em.set_image(url=(answer)) em.set_footer(text=f"Echo discord bot") await ctx.send(embed=em) client is py client = commands.Bot(command_prefix="/") maybe work ?
I did the same
@sly hamlet
Is there anything different other than it saying client
no but who knows maybe it will work ? @sly hamlet don't really know how to help since I didn't receive any error from my side also It could be a formatting mistake ?
We'll see if you command to my bot uses bot and not client and it has to be something with the file because I simply met up a real quick command and it don't work
It is broken I'm going back to using eval that seems to work with it
Ok then delete and create a new one if python has some troubles processing it which it clearly does
u could use eval
As the name suggests it must be a very lit website 😎
Good to know that file is completely trash the new one works
elif member == member.bot:
``` is this ryt?
no.
haha
welp thn how do i?
Are you trying to check the type of member?
ye
you just do if member.bot
unnecessary and wont work
I know, I didn't know what he was trying to do originally
got it
elif member == member.bot:
await ctx.reply("Do you really think a bot is gonna respond to you?", mention_author=True)
oki
elif member.bot
==True:?
no
aighty it works
if checks for True or False
...did work tho
yeah so since member.bot returns a boolean
x = True if x: #same as if x == True
so think of it as if true then do this
if just checks if something is true or not
🤦♂️
you can remove the == True part lol
oh oki thn
literally just elif member.bot
aighty thenks
seeing as if checks for truthiness
!e
x = True
y = False
if x:
print("hi")
if y:
print("noo")
@manic wing :white_check_mark: Your eval job has completed with return code 0.
hi
ahh thenks
guys how can i find a specific file using discord.py?
with its file name?
or class name
say what
do you just mean a local file
is it possible to get the number of humans and bots separately?
🤔
hey
where can i learn discord py
no.
u cant?
how?
you can do it in one line
do you want all the members or all the bots
all the bots
print(list(filter(lambda m: m.bot, ctx.guild.members))) @cinder horizon
what component of an embed?
[click me]("the link here")
though it only works for embed.add_field
for title iz url
a field? title? description?
for k in ctx.guild.members:
if k.bot:
print(k)``` @cinder horizon
this prints all bots
hey
where can i learn discord py
no it also works for titles
lemme try
ty
do you know python.?
for title u got url arg y use hyperlink...and idt it works for title
but ik some c#
you gotta know python :/
oh
u put in the text u want
it doesnt work for titles
hm
where can i learn c# discord
cuz i know only c#
just watch some tutorials on yt u will be coding in like 2 weeks
im a c# user myself and i dont think its possible to make a discord.cs
my bad
def checkTime():
# This function runs periodically every 1 second
threading.Timer(1, checkTime).start()
now = datetime.datetime.now()
current_time = now.strftime("%S")
print("Current Time =", current_time)
if(current_time == '35'): # check if matches with the desired time
test()
checkTime()
async def test():
#calculate new time delta
now_time = datetime.datetime.now()
GIM_RELEASE = datetime.datetime(2021, 10, 6, 10, 30, 00)
delta = GIM_RELEASE - now_time
await channel.message.send
ahh yesh
what am i gettingwrong here
main.py:25: RuntimeWarning: coroutine 'test' was never awaited
test()
RuntimeWarning: Enable tracemalloc to get the object allocation traceback
thats the error im getting
aight now thaz a mistake on my part...how do i get the number of bots?
no way
Use any of those three libraries for C#
amm = 0
for k in ctx.guild.members:
if k.bot:
amm += 1
print(amm)``` @cinder horizon
i mean...thaz wrong in various ways
aighty lemme see
You should consider learning python first
lemme ask you this...have you ever made a code for an embed before?...coz u r doing it waaay wrong
embed.add_field(name="A Name", value="A value")
i think u have to
embed.add_field(name='Invite me!', value='Click me to go to invite me', link=
``` somthing like that
ive never tried doing it
There is no link kwarg
but that would be logical
No because that isn't how links work in discord
lol what am i saying, since when was coding logical
aighty thn try this
embed.add_field(name="Link", value="[Invite Me!]("put the link here")")
ah i get it now
its kinda makes sense
but i still think link should be an arguement
to make it simpler for new coders
wudnt it link-ate the whole field then?...rather than the specific words....tht's be dumb ngl
u could put the arguement after the name?
and this...welp i want the len...how do i get tht...coz it printed the no. of bots...1 to 20
yea ig
oh oops my mobile indenting
unindent print(amm)
it will only print it once
aighty...
guys is there a way for me to create a variable that holds a file ?
Yes
File "main.py", line 1779
entryToAdd = await client.wait_for("message", check=lambda e: e.author == ctx.author, timeout=20)
^
IndentationError: unexpected indent```
i dont know where i messed up my indent
neither do we?
discord moment
Probably where that arrow is pointing to
can u send a screenshot of the line?
ss of the code mayb
this is silly
this isnt discord.py im prettu sure
uh works for me
...welp
Lmao
lol why is ctx.send in the loop
nvm i fixed it
welp that....anyhoo thenks youse
guys does open(file directory) run the script?
1). m high asf on caffeine
2). i jus got my 1st year marks and iz not too bad tht i jus wanna bury myself...soo yea
no. yeah. no.
average programmer
then how can i run the class, function whatever?
average being 3 or 4?...that'd make sense
By running it? What do u wanna run exactly
Make an instance of the class
this for cogs?
kinda
class Test:
pass
instance = Test()
woki
they're in different folders
Import
import 60 scripts?
my question is why
Didn't u say u have it in a class
60 classes lmfao
Hmm
why
Make the folder a package then idfk
why
ive been thinking of looping thru the folder and getting the class based on its name
Or just import *
from ... import *
``` will import everything from your file
60 was an exxageration
it is possible to check if a user removed another users reaction in a specific channel
but like around 16 classes
!d discord.on_reaction_remove
discord.on_reaction_remove(reaction, user)```
Called when a message has a reaction removed from it. Similar to on\_message\_edit, if the message is not found in the internal message cache, then this event will not be called.
Note
To get the message being reacted, access it via [`Reaction.message`](https://discordpy.readthedocs.io/en/master/api.html#discord.Reaction.message "discord.Reaction.message").
This requires both [`Intents.reactions`](https://discordpy.readthedocs.io/en/master/api.html#discord.Intents.reactions "discord.Intents.reactions") and [`Intents.members`](https://discordpy.readthedocs.io/en/master/api.html#discord.Intents.members "discord.Intents.members") to be enabled.
Note
Consider using [`on_raw_reaction_remove()`](https://discordpy.readthedocs.io/en/master/api.html#discord.on_raw_reaction_remove "discord.on_raw_reaction_remove") if you need this and do not want to enable the members intent.
i dont think it works for folders
it does
nvm
U have 60 files in a folder and each file has a class of its own?? What
also why is this in discord bots
Ikr
- if you give me the code I could prob rewrite it all to 2 clean organised files
files*
there is no way im putting every job's salary, hourly, and cooldown in one class