#discord-bots
1 messages Β· Page 566 of 1
good to know people have been asking for this for a long time now i didnt know what to answer
π
Josh. β Today at 7:45 PM
finished = discord.Embed(title="Versai Applications", description=f'Your Answer for Question 12: `{a10.content}`\nAre you sure you want to submit? Please react below!', color = discord.Colour.blue())
print("first mark")
msg = await ctx.author.send(embed=finished)
await msg.add_reaction(checkmark)
await msg.add_reaction(xmark)
print("second mark")
def check(reaction, user):
print("3rd mark")
return all((user.id==ctx.author.id, reaction.message.id==msg.id, str(reaction.emoji) in (checkmark, xmark)))
print("4th mark")
reaction = (await self.bot.wait_for('reaction_add', check=check))[0]
if str(reaction.emoji) == checkmark:
print("5th mark")
I get 0 errors and when i run it it gets to the 3rd mark before not working. Anyone know why? It works perfectly fine in the main server when someone runs it
why is there a [0]
i dont remember the reasoning i was given but it was for reactions i believe
hm
the code works fine in the serevr
just not in dms, however this code previously worked?
Someone please help me
@hard trail whats up
A reaction_add wait_for event returns the reaction and the user that reacted
from discord.ext.commands import Bot
from discord.ext import commands
import asyncio
import random
from random import choice
import embed
import time
import prsaw
from prsaw import RandomStuff
PREFIX = ("$")
bot = commands.Bot(command_prefix=PREFIX, description='')
@bot.event
async def on_ready():
activity = discord.Game(name="$help", type=3)
await bot.change_presence(status=discord.Status.online, activity=activity)
print("Bot is ready!")
rs = RandomStuff(async_mode = True)
@bot.event
async def on_message(message):
if bot.user == message.author:
return
if message.channel.id == 874847853888036949:
response = await rs.get_ai_response(message.content)
await message.reply(response)
await bot.process_commands(message)
bot.run('My Token')```
My code and I keep getting an error
where
whats the error
you need an api key
^
Sorry what does that mean?
hence the error literally saying you need the api key
the api key to the wwebsite
what are you even trying to do?
Random Stuff API is free to use API. It is super easy to use and can be used to get AI Response, jokes, memes, and much more at lightning-fast speed.
Create a chat bot
use this above its very useful and has everything
@echo wasp send it here then
sure give me a second
no its in js its just an example
if you really wanted that you can just run the code on a js file on a vps and make it run so it shows that lol and then have your main bot code on another server or folder obv
It is a bug you mess with the device information when connecting to the websocket
It isn't intended
This is possible with discord.py but requires that you monkeypatch it
Not worth in IMO, and discord, could at any time fix it
agreed fat waste of time just to make it show it as a mobile user
some people go through so much trouble for something so little and useless
sad
agreed
10-20 characters long
token, not id
im making a kill command but it does not work when i try
https://nekos.life/api/v2/img/kill
!e
print(len("736147895039819797"))
``` this is your answer
@boreal ravine :white_check_mark: Your eval job has completed with return code 0.
18
yeah i know
When trying to run the terminal command python -m pip install -U git+https://github.com/Rapptz/discord-ext-menus I get this error. Ive tried installing git several times but its still not working
but what else could i use
i dont know?
like i tried kill
its not that hard
There should be 59 characters in a token iirc, 24 before the first period, 6 in the second and 27 in the last
I could be wrong though
oh
i did mean token but i didnt know how long it was
No you didn't, you showed the ID π
also how the hell would I remember how long a bot token is
???? π€·ββοΈ
He said it 2 times π€¦ββοΈ
he did
len(bot.http.token)
I said they were 10-20 chars long
token
the shit you paste into bot.run(token)
not the snowflake id
right ty
also, can you enable 2fa on a bot using a discord bot client or something 
bot clients are illegal
@shrewd pasture #help-peanut duh i didn't notice it lol
@rancid grail i need help error in what you helped setup
# bot.py
import os
import discord
from discord.ext import commands
from Moveitfolders import main
from dotenv import load_dotenv
load_dotenv()
TOKEN = os.getenv('DISCORD_TOKEN')
GUILD = os.getenv('DISCORD_GUILD')
intents = discord.Intents.default()
intents.members = True
def check_if_it_is_me(ctx):
return ctx.message.author.id == 786788350160797706
client = commands.Bot(command_prefix='$', intents=intents, owner_id=786788350160797706)
print (GUILD)
bot = client
@client.event
async def on_ready():
for guild in client.guilds:
print(guild.name)
if guild.name == GUILD:
break
print(
f'{client.user} is connected to the following guild:\n'
f'{guild.name}(id: {guild.id})\n'
)
members = '\n - '.join([member.name for member in guild.members])
print(f'Guild Members:\n - {members}')
@bot.command(name='ping')
async def ping(ctx):
await ctx.channel.send("pong")
@bot.command(name='Moveit')
@commands.is_owner()
async def only_for_me(self, ctx):
ctx.channel.send(main())
client.run(TOKEN)``` code and i never touched The other file
ok so just remove it
yes
Pls
profile?
Like the command
oh
In which lobby
#bot-commands !u if you mean your user profile
Ya
How can I edit/change a file from a message? For example
message = await ctx.send(file=discord.File(...))
await message.edit(?=discord.File(...))
that fixed but it doesn't understand log but python does without discord bot attached to it
Have you tried that first?
message = await ctx.send(file=discord.File(...))
await message.edit(file=discord.File(...))
log?
That is just pseudo code, and yes, I tried, I do not see the file parameter
here can i send in dm i don't want to share file in public
sure ig
!d discord.Message.edit
await edit(content=..., embed=..., embeds=..., attachments=..., suppress=..., delete_after=None, allowed_mentions=..., view=...)```
This function is a [*coroutine*](https://docs.python.org/3/library/asyncio-task.html#coroutine).
Edits the message.
The content must be able to be transformed into a string via `str(content)`.
Changed in version 1.3: The `suppress` keyword-only parameter was added.
hm your right
that is file it talking about
so your saying that it doesnt work?
it works fine but the bot doesn't like the log part
Theres only attachments, which I have no idea if it helps
How do you make those page type help commands
Page?
Mhm
It'll be like
1/9
Then they're would be reactions to move pages
That should help
How can you add several checks
Noone
how can i make this command that tracks how many times you have said its prefix?
!d discord.on_command
No documentation found for the requested symbol.
How can I check several conditions at once in the if statement?
code
@commands.command(name= "ΠΎΡΠΈΡΡΠΈΡΡ")
async def clear(self, ctx, amount=None):
if amount==None or amount==0:
await ctx.send("Π£ΡΠ°")
Exactly like you did, or nah?
this code that I have given does not work
How's that?
That's what I'm asking you
So it always sent the Ypa?
no, he is sending the current amount=None
So what doesn't work?
when I drive 0 it doesn't work in amount==0 either
everything works
Good
on_message, saving it in a database ig
Why when I try to get the uses of the event invitations on_member_join it doesn't work, but in "on_invite_create" it works, even when I convert the invite.uses to int?
console:
do you have member intents enabled?
yep
oh wait my bad, you sent the error
!d discord.ext.commands.Bot.fetch_invite fetch the invite
await fetch_invite(url, *, with_counts=True, with_expiration=True)```
This function is a [*coroutine*](https://docs.python.org/3/library/asyncio-task.html#coroutine).
Gets an [`Invite`](https://discordpy.readthedocs.io/en/master/api.html#discord.Invite "discord.Invite") from a discord.gg URL or ID.
Note
If the invite is for a guild you have not joined, the guild and channel attributes of the returned [`Invite`](https://discordpy.readthedocs.io/en/master/api.html#discord.Invite "discord.Invite") will be [`PartialInviteGuild`](https://discordpy.readthedocs.io/en/master/api.html#discord.PartialInviteGuild "discord.PartialInviteGuild") and [`PartialInviteChannel`](https://discordpy.readthedocs.io/en/master/api.html#discord.PartialInviteChannel "discord.PartialInviteChannel") respectively.
Do you think it could be because when I took the information out of the database I converted it to str?
your current invite is currently a str
.
!indents
Indentation
Indentation is leading whitespace (spaces and tabs) at the beginning of a line of code. In the case of Python, they are used to determine the grouping of statements.
Spaces should be preferred over tabs. To be clear, this is in reference to the character itself, not the keys on a keyboard. Your editor/IDE should be configured to insert spaces when the TAB key is pressed. The amount of spaces should be a multiple of 4, except optionally in the case of continuation lines.
Example
def foo():
bar = 'baz' # indented one level
if bar == 'baz':
print('ham') # indented two levels
return bar # indented one level
The first line is not indented. The next two lines are indented to be inside of the function definition. They will only run when the function is called. The fourth line is indented to be inside the if statement, and will only run if the if statement evaluates to True. The fifth and last line is like the 2nd and 3rd and will always run when the function is called. It effectively closes the if statement above as no more lines can be inside the if statement below that line.
Indentation is used after:
1. Compound statements (eg. if, while, for, try, with, def, class, and their counterparts)
2. Continuation lines
More Info
1. Indentation style guide
2. Tabs or Spaces?
3. Official docs on indentation
And?
Then maybe send these and not the previous one 
hello any one here to help?
well i want to have the member get a specific role but the bot isnt really doing what am telling it do
What's your code, what errors do you get, etc. etc.
here is my code
https://paste.pythondiscord.com/zamaqukeju.sql this is my error code
UnboundLocalError: local variable 'member' referenced before assignment
You should indent this there:
well i just do it
for filename in os.listdir("./cogs"):
if filename.endswith(".py"):
client.load_extension(f"cogs.{filename[:-3]}")
help
"help", doesn't give any information on what's not working
Discord auto-detects when there is folder called cogs
sorry to bother i figured it out
!indents
Indentation
Indentation is leading whitespace (spaces and tabs) at the beginning of a line of code. In the case of Python, they are used to determine the grouping of statements.
Spaces should be preferred over tabs. To be clear, this is in reference to the character itself, not the keys on a keyboard. Your editor/IDE should be configured to insert spaces when the TAB key is pressed. The amount of spaces should be a multiple of 4, except optionally in the case of continuation lines.
Example
def foo():
bar = 'baz' # indented one level
if bar == 'baz':
print('ham') # indented two levels
return bar # indented one level
The first line is not indented. The next two lines are indented to be inside of the function definition. They will only run when the function is called. The fourth line is indented to be inside the if statement, and will only run if the if statement evaluates to True. The fifth and last line is like the 2nd and 3rd and will always run when the function is called. It effectively closes the if statement above as no more lines can be inside the if statement below that line.
Indentation is used after:
1. Compound statements (eg. if, while, for, try, with, def, class, and their counterparts)
2. Continuation lines
More Info
1. Indentation style guide
2. Tabs or Spaces?
3. Official docs on indentation
how do i fetch member name from on_member_edit
You need intents
please
i have all 3 intents enabled
yep
on_member_edit is not even a valid event, it's on_member_update
!d discord.on_member_update
discord.on_member_update(before, after)```
Called when a [`Member`](https://discordpy.readthedocs.io/en/master/api.html#discord.Member "discord.Member") updates their profile.
This is called when one or more of the following things change:
β’ nickname
β’ roles
β’ pending...
What is shard?
i mean on_message_edit
how do i fetch member from on_message_edit
but my code is like
@client.event
async def on_message_edit(before, after) :
Yeah
so will it work
So?
oh yeah ok ok
thank you!
um
@client.event
async def on_message_edit(before, after) :
mod_log = client.get_channel(mod_log_channel)
embed = discord.Embed(title = "A message is edited!", color = discord.Color.red())
embed.add_field(name = "Before Message", value = f"{before}", inline = False)
embed.add_field(name = "After Message", value = f"{after}", inline = False)
embed.add_field(name = "Message sent by", value = f"{before.author.name}", inline = False)
embed.set_author(name = f"{before.author.name}", icon_url = f"{before.author.avatar_url}")
embed.set_footer(text = "Developed by The Epix Ray", icon_url = "https://cdn.discordapp.com/attachments/881224361015672863/903317898016198787/channel-profile.png")
await mod_log.send(embed = embed)
i would help but i dont know how to use cogs
fixed!
@client.event
async def on_guild_role_create(role) :
how do i fetch role author who created it?
hi guys, do you know how can I use users avatar as an emoji?
in discord of course π
It'd be a mess to pull off.
That means you'll have to create an emoji for each user's avatar and also store it inside a database.
anyone
how would i check if the bot can join a voice channel? i use @commands.bot_has_permissions(connect = True) and it just says it does not have connect permissions
you'll need to use the audit log, since it's not included as part of the event
so can you send me code fetching it?
i will understand it
How can i wait momentarily until an interaction is dispatched rather than a wait for stop in a view in dpy 2.0?
help please?
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: AttributeError: 'Context' object has no attribute 'session'
Code please?
I'm assuming that the Context object is the object passed into your command callback, and it doesn't have an attribute session
Or is this your subclass or something
you probably tried ctx.session
yes
Hence the error is raised
What is your intention?
can anyone send me a youtube tutorial you think is best to learn audit logs from dpy
my recommendation is to avoid yt tutorials
so?
And learn by reading the docs
how do i solve it?
thats my issue
Send your code here
i cant understand docs (i am finding how to fetch creator of a role in the docs) and it has been half hour
!stb
Hey @amber imp!
It looks like you tried to attach a Python file - please use a code-pasting service such as https://paste.pythondiscord.com
As i said Context object doesnβt have any attribute session..
You have to use aiohttp.ClientSession() to do http requests
!d aiohttp.ClientSession
class aiohttp.ClientSession(*, connector=None, loop=None, cookies=None, headers=None, skip_auto_headers=None, auth=None, json_serialize=json.dumps, version=aiohttp.HttpVersion11, ...)```
The class for creating client sessions and making requests.
ok
docs ez
tab
tab?
how do discord bots work?
By communicating with Discord's API in a number of different ways.
what languages are used to develop discord bots?
Fix your indentation.
hmm
Any language that can do HTTP/S requests.
What does this error mean?
Traceback (most recent call last):
File "main.py", line 24, in <module>
from ButtonPaginator import Paginator
File "/opt/virtualenvs/python3/lib/python3.8/site-packages/ButtonPaginator/__init__.py", line 1, in <module>
from .paginator import Paginator
File "/opt/virtualenvs/python3/lib/python3.8/site-packages/ButtonPaginator/paginator.py", line 8, in <module>
from discord_components import (
ImportError: cannot import name 'InteractionType' from 'discord_components' (/opt/virtualenvs/python3/lib/python3.8/site-packages/discord_components/__init__.py)
Your indentation.
I think it's client = discord.Client()
!indent
Indentation
Indentation is leading whitespace (spaces and tabs) at the beginning of a line of code. In the case of Python, they are used to determine the grouping of statements.
Spaces should be preferred over tabs. To be clear, this is in reference to the character itself, not the keys on a keyboard. Your editor/IDE should be configured to insert spaces when the TAB key is pressed. The amount of spaces should be a multiple of 4, except optionally in the case of continuation lines.
Example
def foo():
bar = 'baz' # indented one level
if bar == 'baz':
print('ham') # indented two levels
return bar # indented one level
The first line is not indented. The next two lines are indented to be inside of the function definition. They will only run when the function is called. The fourth line is indented to be inside the if statement, and will only run if the if statement evaluates to True. The fifth and last line is like the 2nd and 3rd and will always run when the function is called. It effectively closes the if statement above as no more lines can be inside the if statement below that line.
Indentation is used after:
1. Compound statements (eg. if, while, for, try, with, def, class, and their counterparts)
2. Continuation lines
More Info
1. Indentation style guide
2. Tabs or Spaces?
3. Official docs on indentation
Anyone
There's no InteractionType in discord_components.
can someone have a look here #help-carrot ?
Take a moment to look at your code please.
Do you think that in any way this is correct indentation?
can someone tell me how to make a self bot ?
that's against discord's ToS
!rule 5
5. Do not provide or request help on projects that may break laws, breach terms of services, or are malicious or inappropriate.
before you start developing discord bots first learn python, indentation errors are really basic
it is
also i want it only for memes
@slate swan
doesn't matter your reasons, it's against discord's ToS
Still breaks discord's TOS
bro idgaf about discord TOS
Self Bot against discord's ToS
no one's gonna help you
Okay but we aint helping you
we don't care if you don't care about it but no one is gonna help you do something malicious
its not malicious
But it's against discord's ToS
it's breaking discord's ToS so it kinda is
We can't help you with breaking ToS
why do you want to do it by your account tho? you can use a bot
We still cant help you even if whatever you are gonna use it for isnt malicious
Yea
if you really wanna make a selfbot learn the language and do it yourself π
or if you want "just to post memes" , discord allows you to do that
@arctic python I think we need a little help here.
how can i learn the language
You made self bot?
*forked
So you can get banned, of course!
Someone needs to DM modmail at this point.
'gay things' explen
or just ping another mod :bigbrain:
they just deleted the message lol
Only the author of the self bot can use it.
dw i got a ss of it π
LOL
same
Sebastian is here.
why my message getting deleted π€
We've handled the situation, we can move on :)
No need to continue that, let's move on as it's already handled.
because you were once an alt too π³
I wasn't
My account is literally 3 years old
default pfp = alt π
yo guys how to remove a reaction from a message?
!d discord.Message.remove_reaction
await remove_reaction(emoji, member)```
This function is a [*coroutine*](https://docs.python.org/3/library/asyncio-task.html#coroutine).
Remove a reaction by the member from the message.
The emoji may be a unicode emoji or a custom guild [`Emoji`](https://discordpy.readthedocs.io/en/master/api.html#discord.Emoji "discord.Emoji").
If the reaction is not your own (i.e. `member` parameter is not you) then the [`manage_messages`](https://discordpy.readthedocs.io/en/master/api.html#discord.Permissions.manage_messages "discord.Permissions.manage_messages") permission is needed.
The `member` parameter must represent a member and meet the [`abc.Snowflake`](https://discordpy.readthedocs.io/en/master/api.html#discord.abc.Snowflake "discord.abc.Snowflake") abc.
yw
π
hello, i got a issue on FFmpeg that i host at heroku
i arl specify ffmpeg at requirements and i arl try add ffmpeg to buildpack and got error
ClientException: ffmpeg was not found.
oh ur an alt now
@languid charms π
NO
oh it's an account, thought i actually pinged mods by accident 
you need a builtpack
@slate swanz
done
added https://github.com/FFmpeg/FFmpeg.git to buildpacks
ok ill try brb
its output is same
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: ClientException: ffmpeg was not found.
also add ffmpeg in your requirements.txt
hold on this removes like the emoji thing
i want it to get rid of the reacts
all of the emojis?
already
@finite plinth
ye
!d discord.Message.clear_reactions
await clear_reactions()```
This function is a [*coroutine*](https://docs.python.org/3/library/asyncio-task.html#coroutine).
Removes all the reactions from the message.
You need the [`manage_messages`](https://discordpy.readthedocs.io/en/master/api.html#discord.Permissions.manage_messages "discord.Permissions.manage_messages") permission to use this.
what i mean was like
there
how you redeploy btw?
uhm
i think i didnt do that
he just sent it to you .-.
then it's remove_reaction π
yes, it's remove_reaction
Bro... Read...
did you even read the docs on this
i did
then??
it just removes like all this
i want it from this
show how you're using remove_reaction
to this
in the code
hi guys
looool thx for the help @slate swan
how can I set my textchannel to be news channel?
Β―_(γ)_/Β―
!d discord.TextChannel.edit
await edit(*, reason=None, **options)```
This function is a [*coroutine*](https://docs.python.org/3/library/asyncio-task.html#coroutine).
Edits the channel.
You must have the [`manage_channels`](https://discordpy.readthedocs.io/en/master/api.html#discord.Permissions.manage_channels "discord.Permissions.manage_channels") permission to use this.
Changed in version 1.3: The `overwrites` keyword-only parameter was added.
Changed in version 1.4: The `type` keyword-only parameter was added.
Changed in version 2.0: Edits are no longer in-place, the newly edited channel is returned instead.
How do I catch Dm Messages ?
check if the instance of the channel is discord.DMChannel
or if the guild is None, since dms aren't inside a guild
hi, after a long time i am getting back to building a discord bot for a college project and i find out that the discord.py library is set to read-only and would no longer be maintained. I wanted to ask if it still works or do we have to change any code or any alternatives? Can anyone point me to the right docs given the change?
which param should I modify?
v8*, dpy 2.0 uses v8
type, as said in the docs
https://discordpy.readthedocs.io/en/master/api.html#discord.TextChannel.edit
oh,
it'll work for now until discord does some breaking changes or they deprecate the api, but the lib itself will becomes very outdated with each new thing discord adds
ok I see, so I have another question, can I set news channel via discord app?
not via code
the best alternative is disnake, has the same dpy 2.0 syntax and by far the most promising fork out of all the others
Inside on_message ?
just click edit channel
I do but I have no opton
depends where you're using it, but yeah that works too
oh thanks, will check it out
do I need some Nitro?
no
ok let me see
scroll a bit down, it's there
it won't make a difference but alr Β―_(γ)_/Β―
I do not see anything like you said
I do right click on channel. I select Edit Channel I scroll down
and I see this:
@slate swan where is it?
NSFW channel is what marks it as a nsfw type channel
and then it is a news channel?
if you want the Announcement channel you need to make your server become a community
I see
and what it gives me ? is it making it public server?
it's an instance of a dm channel, check the type of the message's channel
channel id?
perhaps
it says all that it does when you enable it
ya doing it
use isinstance for it
it returns True if the channel's type is a discord.DMChannel else False if it isn't
@slate swan thank you
yw
yw
the new message content intent is only for verfied bots, so if i make a bot for personal use in 1 server only, it wont be affected with this change right?
yes
okk thanks
and these intent granting process which needs special approval and all is also only for verified bots, right?
another question:
I do not get archived threads when do this:
py g = bot.get_guild(810847352650465330) for t in g.threads: if t.archived: print(t.name, "is archived, id:", t.id) try: await t.delete() except discord.DiscordException as e: print(e) else: print(t.name, "is active, id:", t.id)
sometime I get them but most of the time I do not
Integrate your service with Discord β whether it's a bot or a game or whatever your wildest imagination can come up with.
check the type
i cant find any warn command
all of them doesnt work
with some errors
!d def warn
bruh
i did
yes and?
type of what?
but doesnt work then i tried to search but even the search doesnt work
ur checking for threads right
yes
wdym "search"?
you can check the thread type
search on google to see what is the wrong with mine
I would like to find archived threads and their origin messag and remove them
show me it
hmm
so what about this threads, I am looking for archived but they are never on guild.threads
guys, how to make a bot divide a number into tens, hundreds, thousands, etc. with commas. for example, let's take the number 10000, and the bot recorded it as 10,000
!e
a = 5000
print(f"{a:,}")
@boreal ravine :white_check_mark: Your eval job has completed with return code 0.
5,000
I dont exactly know what its called lol
π
so what do
don't ask me
i dont know what you want
i cant read your mind
what command
then use the parameters you assigned to the function
parameter*
so
its not even a command
^
How can I get when account is created
!d discord.Member.created_at
property created_at```
Equivalent to [`User.created_at`](https://discordpy.readthedocs.io/en/master/api.html#discord.User.created_at "discord.User.created_at")
tnx
π
full code
@client.event
async def on_message(message, ctx, suggestion):
if message.channel.name != "suggestions":
return
await message.add_reaction('β
')
await message.add_reaction('β')
embed = discord.Embed(title="no c", description=f"cc", colour=discord.Colour.light_gray())
embed.add_field(name="Sugestie daΕ {ctx.author.name}", icon_url = {ctx.author.avatar_url}, inline=False)
embed.add_field(name="Mowa sugestia!", value=f"{suggestion}", inline=False)
await ctx.send(embed=embed)
@client.event
async def on_reaction_add(reaction, user):
if reaction.message.channel.name != "suggestions":
return
if (reaction.emoji == upvote) and (reaction.count == up_needed):
print("upvotes reached")
await client.send_message(reaction.message.server.get_member_named(admin), "A suggestion has reached " + str(up_needed) + " :arrow_up:!")
await client.send_message(reaction.message.server.get_member_named(admin), reaction.message.content)
if (reaction.emoji == downvote) and (reaction.count == down_needed):
await client.send_message(reaction.message.server.get_member_named(admin), "A suggestion has got " + str(down_needed) + " :arrow_down:!")
await client.send_message(reaction.message.server.get_member_named(admin), reaction.message.content)```
ure better off using actual commands that start off with the @client.command() decorator, it gives you alot of advantages. one of it is error handling
the reason why ur on_message event doesnt work is because that event only takes in ONE argument
u help me fix it?
im already helping you, start off by deleting everything and using proper commands
delete that all?
just the on_message
!d
already
i dont want command
i need a thing that every time someone get warned record the warn so i can use it with the warnings command
when someone write on channel "suggestions" bot give message in embed and give reaction
@rain olive
Hello, i could need some help and i dont know how to solve it π¦
i get this Error:
Trying to Reconnect now
<class 'RuntimeError'> Concurrent call to receive() is not allowed
Backend TkAgg is interactive backend. Turning interactive mode on.
Traceback (most recent call last):
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38\lib\threading.py", line 932, in _bootstrap_inner
self.run()
File "C:\Users\Administrator\AppData\Roaming\Python\Python38\site-packages\discord\gateway.py", line 150, in run
f = asyncio.run_coroutine_threadsafe(coro, loop=self.ws.loop)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38\lib\asyncio\tasks.py", line 912, in run_coroutine_threadsafe
loop.call_soon_threadsafe(callback)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38\lib\asyncio\base_events.py", line 756, in call_soon_threadsafe
self._check_closed()
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38\lib\asyncio\base_events.py", line 504, in _check_closed
raise RuntimeError('Event loop is closed')
RuntimeError: Event loop is closed
Exception in thread Thread-10:
Traceback (most recent call last):
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38\lib\threading.py", line 932, in _bootstrap_inner
sys:1: RuntimeWarning: coroutine 'HTTPClient.close' was never awaited
RuntimeWarning: Enable tracemalloc to get the object allocation traceback
I suspect it from those lines:
@client.event
async def on_disconnect():
print("Lost connection", datetime.datetime.now())
print("Trying to Reconnect now")
try:
await client.connect()
await asyncio.sleep(60 * 5)
except discord.ConnectionClosed:
print("There has been an Error during the reconnection")
except discord.GatewayNotFound:
print("There is an Error with the Token or at least the API --> GateWayNotFound")
except RuntimeError:
# os.startfile(str(__file__))
exit()```
what?
didnt i tell u to send ur code
an hour ago
just read the error , you didnt awaited something
is that all the code?
I can't seem to find an error in their code tho
thats not from me ..i didnt wrote asyncio^^
wym
discord.py runs on asyncio , so anything you do in it is dependent
Traceback (most recent call last):
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38\lib\threading.py", line 932, in _bootstrap_inner
sys:1: RuntimeWarning: coroutine 'HTTPClient.close' was never awaited
the bot runs around 30 min without problems...and then poof...Disconnected and he tries to reconnect with those lines
try:
client.run(Token)
except SystemExit:
os.startfile(str(__file__))
exit()
except BaseException as e:
print(type(e), e)
skip = False
if not isinstance(e, SystemExit):
if not os.path.isfile("Error.txt"):
with open("Error.txt", "w") as Err:
pass
with open("Error.txt", "a") as Err:
try:
Err.write(str(datetime.datetime.now()) + "," + str(discord.__version__) + "," + str(
traceback.print_tb(e.traceback)) + "\n")
except AttributeError:
skip = True
pass
except:
if not skip:
Err.write(str(datetime.datetime.now()) + "," + str(discord.__version__) + "," + str(
traceback.print_tb(e)) + "\n")
# os.startfile(str(__file__))
exit()
except Exception as e:
print(type(e), e)
skip = False
if not isinstance(e, (SystemExit, RuntimeWarning)):
if not os.path.isfile("Error.txt"):
with open("Error.txt", "w") as Err:
pass
with open("Error.txt", "a") as Err:
try:
Err.write(str(datetime.datetime.now()) + "," + str(discord.__version__) + "," + str(
traceback.print_tb(e.traceback)) + "\n")
except AttributeError:
skip = True
except:
if not skip:
try:
Err.write(str(datetime.datetime.now()) + "," + str(discord.__version__) + "," + str(
traceback.print_tb(e)) + "\n")
except:
Err.write(str(datetime.datetime.now()) + "," + str(discord.__version__) + "," + str(
type(e)) + " " + str(e) + "\n")
# os.startfile(str(__file__))
exit()```
Thats how i tried to catch the Errors
someone know how can i fix that?
send_message is no longer a thing
again
on_message only takes 1 parameter
not 3
yeah that too^
so what do
idk how i can edit this
i dont want break it more
!d discord.on_message as you can see it takes only message as an argument
discord.on_message(message)```
Called when a [`Message`](https://discordpy.readthedocs.io/en/master/api.html#discord.Message "discord.Message") is created and sent.
This requires [`Intents.messages`](https://discordpy.readthedocs.io/en/master/api.html#discord.Intents.messages "discord.Intents.messages") to be enabled.
Warning
Your botβs own messages and private messages are sent through this event. This can lead cases of βrecursionβ depending on how your bot was programmed. If you want the bot to not reply to itself, consider checking the user IDs. Note that [`Bot`](https://discordpy.readthedocs.io/en/master/ext/commands/api.html#discord.ext.commands.Bot "discord.ext.commands.Bot") does not have this problem.
use message to define the channel using , message.channel , and send the embed
await message.channel.send is the new thing
yes in 1.x +
Author can also be used as a Channel
learn more about python functions? also if u read the docs you'll see that on_message only takes 1 parameter
π
Please tell me if it is possible to send news from the site to the discord channel? For example, news was published on the site in a specific section, and the bot took and sent this news to the channel. Maybe someone has examples of such work. I will be grateful
but how edit it for its working
i read this and how move it
wot
for its working and have one parameter
Webhooks.
!d discord.Message , this is what the message arg returns , using its attributes you can do all the stuff you would do with ctx
class discord.Message```
Represents a message from Discord.
x == y Checks if two messages are equal.
x != y Checks if two messages are not equal.
hash(x) Returns the messageβs hash.
so add class discord.Message only?
How do I make a bot send an image that I've made with PIL?
the message is discord.Message instance already
messageable.send(file=discord.File('the path of file you saved'))```
i think you have to save it first and then load it edited the way Sarthak wrote π
ah ok
I don't Understand
thanks π
did you read the on_message event docs?
Yes
message is a discord.Message there
and it has attributes like channel , author and stuff
use them in your code
u, i try
Hey can someone help me with this
I have a dir called routes and it wrks locally, but doesnt when i run using gunircorn it says import error
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/gunicorn/arbiter.py", line 589, in spawn_worker
worker.init_process()
File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 134, in init_process
self.load_wsgi()
File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 146, in load_wsgi
self.wsgi = self.app.wsgi()
File "/usr/lib/python3/dist-packages/gunicorn/app/base.py", line 67, in wsgi
self.callable = self.load()
File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 58, in load
return self.load_wsgiapp()
File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 48, in load_wsgiapp
return util.import_app(self.app_uri)
File "/usr/lib/python3/dist-packages/gunicorn/util.py", line 384, in import_app
mod = importlib.import_module(module)
File "/usr/lib/python3.9/importlib/__init__.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 850, in exec_module
File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
File "/root/aerzik/__init__.py", line 5, in <module>
from routes.web import app
ModuleNotFoundError: No module named 'routes'
[2021-10-28 17:21:34 +0000] [21595] [INFO] Worker exiting (pid: 21595)
[2021-10-28 17:21:34 +0000] [21596] [ERROR] Exception in worker process
weird
?
wait this is the wrong channel to ask that
oh then where should i ask?
idk
!d discord.Message.add_reaction
await add_reaction(emoji)```
This function is a [*coroutine*](https://docs.python.org/3/library/asyncio-task.html#coroutine).
Add a reaction to the message.
The emoji may be a unicode emoji or a custom guild [`Emoji`](https://discordpy.readthedocs.io/en/master/api.html#discord.Emoji "discord.Emoji").
You must have the [`read_message_history`](https://discordpy.readthedocs.io/en/master/api.html#discord.Permissions.read_message_history "discord.Permissions.read_message_history") permission to use this. If nobody else has reacted to the message using this emoji, the [`add_reactions`](https://discordpy.readthedocs.io/en/master/api.html#discord.Permissions.add_reactions "discord.Permissions.add_reactions") permission is required.
whats the error
That only
hm
show me code
what argument does add_reaction() takes
guys, how to calculate the percentage of a number?
an emoji
.add_reaction(":grinning:")
ok lemme see
this is not related to dpy/bot development
i already understoon
amount *% and then divide on 100
what version are you on
wtf
anyone?
which part isnt working
nothing in the ban cmd is working
which part
try adding print statements to the command
idk
!d discord.ui.View
ok
class discord.ui.View(*, timeout=180.0)```
Represents a UI view.
This object must be inherited to create a UI within Discord.
New in version 2.0.
weird
@dim cedarthis
everything works but user didnt get banned
not even error
Does your bot have permissions
Did u try to ban yourself
Does the bot have member intents
what is member indent?
maybe cuz of this
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.
ok wait a sec
@commands.command()
async def status(self,ctx, member : discord.Member=None):
if member is None:
member = ctx.author
embed=discord.Embed(title=f"{member.name} your current status is", description= f'{member.activities[0].name}', color=0x2f3136)
await ctx.send(embed=embed)```
why does this command does not responds?
error?
is the cog loaded?
yeah
wierd
and , do you have an error handler?
yeah
could you please show that?
@boreal ravine
its probably eating your error
the error handler?
Whats the index for
ye
The activities that the user is currently doing.
Note
Due to a Discord API limitation, a userβs Spotify activity may not appear if they are listening to a song with a title longer than 128 characters. See GH-1738 for more information.
!d discord.Member.activities
returns a BaseActivity
ok
ok so it does not have a name attr
hm
ima try do it without cog
that's the reason they indexed it
hm
yo i need help with a simple anti spam event when someone spams just to delete their messages
use on_message events , and count how many messages the member sent ( probably in a dictionary which you can reset after every n seconds/minutes) , if the number of message exceeds spam limit , message.delete() it
@commands.guild_only()
@commands.command(description = "Show the status of a member or of yourself.", usage = "status [member]", aliases = ["us", "user-status", "member-status"])
async def status(self, ctx, *, member: discord.Member = None):
member = member or ctx.author
if member.activity is None:
member_status = "No status"
else:
member_status = member.activity.name
embed = discord.Embed(title = f"{member.name}#{member.discriminator}", description = f"Status: **{member.status}**\n*{member_status}*", colour = member.colour)
embed.set_author(name = f"{member.id}", icon_url = member.avatar_url)
embed.set_thumbnail(url = member.avatar_url)
await ctx.reply(embed = embed)```
this one works but does not show there status
i dont get it
!custom-cooldown
Cooldowns in discord.py
Cooldowns can be used in discord.py to rate-limit. In this example, we're using it in an on_message.
from discord.ext import commands
message_cooldown = commands.CooldownMapping.from_cooldown(1.0, 60.0, commands.BucketType.user)
@bot.event
async def on_message(message):
bucket = message_cooldown.get_bucket(message)
retry_after = bucket.update_rate_limit()
if retry_after:
await message.channel.send(f"Slow down! Try again in {retry_after} seconds.")
else:
await message.channel.send("Not ratelimited!")
from_cooldown takes the amount of update_rate_limit()s needed to trigger the cooldown, the time in which the cooldown is triggered, and a BucketType.
take it as an example , you would be deleting the message instead of sending the error
which status
author = ctx.message.author
await ctx.send( arg )```
how to make it so that he would answer not only the first word after the command?
Explain?
You want him to send the command word and arg ?
@bot.event
async def on_message(message):
counter = 0
with open("spam_detect.txt", "r+") as file:
for lines in file:
if lines.strip("\n") == str(message.author.id):
counter+=1
file.writelines(f"{str(message.author.id)}\n")
if counter > 5:
await message.guild.ban(message.author, reason="anti-raid by crypticπ"
await asyncio.sleep(1)
await asyncio.sleep(1)
await message.guild.unban(message.author)
i have this rn but i want one that just deletes the message when someone keep spamming
async def echo(ctx, *, content: str):
await ctx.send(content)
I dont think he needs self
@commands.guild_only()
@commands.command(description = "Show the status of a member or of yourself.", usage = "status [member]", aliases = ["us", "user-status", "member-status"])
async def status(self, ctx, *, member: discord.Member = None):
member = member or ctx.author
if member.activity is None:
member_status = "No status"
else:
member_status = member.activity.name
embed = discord.Embed(title = f"{member.name}#{member.discriminator}", description = f"Status: **{member.status}**\n*{member_status}*", colour = member.colour)
embed.set_author(name = f"{member.id}", icon_url = member.avatar_url)
embed.set_thumbnail(url = member.avatar_url)
await ctx.reply(embed = embed)```
this one works but does not show there status
Ah yeah good catch, stolen from one of my projects
trun presence intents on
did already
in the code as well?
Cant he just use multiple args
Hey could i get some help making a embed message update? I have variables inside that are constantly changing and i need them to update. Heres my code, it isnt working:
@client.event
async def on_message(message, self):
guild = self.bot.get_guild(894937415607779349)
channel = guild.get_channel(903612015354982430)
msg = await message.channel.get_message(903659880995508274)
while True:
asyncio.sleep(2)
await msg.edit(embed = embed)
Is there something like a
random.choice(1,3) or?
I currently have number = random.choice(1,3) for rock paper scissors command but get the following error:
File "/home/container/bot.py", line 263, in sps
nummer = random.choice(1,3)
TypeError: choice() takes 2 positional arguments but 3 were given
Fixed It
:> it takes a list as argument
on_message takes only 1 argument and its message
are you in cogs?
could you tell me what code it needs then?
iβve have been at this since first thing this morning
and nothing has worked
.
i donβt know what that means
Theyre asking if what youve shown is in a cog i believe
no i am not
well then why do use self?
because i donβt know what iβm doing
!d discord.on_message , reading this would help
discord.on_message(message)```
Called when a [`Message`](https://discordpy.readthedocs.io/en/master/api.html#discord.Message "discord.Message") is created and sent.
This requires [`Intents.messages`](https://discordpy.readthedocs.io/en/master/api.html#discord.Intents.messages "discord.Intents.messages") to be enabled.
Warning
Your botβs own messages and private messages are sent through this event. This can lead cases of βrecursionβ depending on how your bot was programmed. If you want the bot to not reply to itself, consider checking the user IDs. Note that [`Bot`](https://discordpy.readthedocs.io/en/master/ext/commands/api.html#discord.ext.commands.Bot "discord.ext.commands.Bot") does not have this problem.
if you face any problem even after that , you can ask here...
i know that, im trying to make embed message update the variables inside
await ctx.message.delete()
help_log = client.get_channel(help_log_channel)
confirmation = await ctx.send(
"Are you sure you want to continue",
components = [
Button(style = ButtonStyle.green, label = "Continue"),
Button(style = ButtonStyle.red, label = "I wanna go back")
]
)
confirmation.delete()
throws an error
you wont be using self for that
since you aint inside a class , are you?
fixed
its just inside an event
so i can send a message and start the infinite loop
i have variables that need to be updated
you wont be using self there in that case
!simple
Star / Wildcard imports
Wildcard imports are import statements in the form from <module_name> import *. What imports like these do is that they import everything [1] from the module into the current module's namespace [2]. This allows you to use names defined in the imported module without prefixing the module's name.
Example:
>>> from math import *
>>> sin(pi / 2)
1.0
This is discouraged, for various reasons:
Example:
>>> from custom_sin import sin
>>> from math import *
>>> sin(pi / 2) # uses sin from math rather than your custom sin
β’ Potential namespace collision. Names defined from a previous import might get shadowed by a wildcard import.
β’ Causes ambiguity. From the example, it is unclear which sin function is actually being used. From the Zen of Python [3]: Explicit is better than implicit.
β’ Makes import order significant, which they shouldn't. Certain IDE's sort import functionality may end up breaking code due to namespace collision.
How should you import?
β’ Import the module under the module's namespace (Only import the name of the module, and names defined in the module can be used by prefixing the module's name)
>>> import math
>>> math.sin(math.pi / 2)
β’ Explicitly import certain names from the module
>>> from math import sin, pi
>>> sin(pi / 2)
Conclusion: Namespaces are one honking great idea -- let's do more of those! [3]
[1] If the module defines the variable __all__, the names defined in __all__ will get imported by the wildcard import, otherwise all the names in the module get imported (except for names with a leading underscore)
[2] Namespaces and scopes
[3] Zen of Python
7. Simple statements
A simple statement is comprised within a single logical line. Several simple statements may occur on a single line separated by semicolons. The syntax for simple statements is...
7. Simple statements
A simple statement is comprised within a single logical line. Several simple statements may occur on a single line separated by semicolons. The syntax for simple statements is...
In order to work with the library and the Discord API in general, we must first create a Discord Bot account.
Creating a Bot account is a pretty straightforward process.
bro
That is giving me HTTPException Unknown Emoji error
hm
That also doesn't works π
error?
works perfectly for me
.send(embed=embed)
if you will just do .send(embed) it will just send the object name
yeah i figured that part
now all i need is the variables to update
Works now
thats the code for defining the embed
i have a issue
i need that to update with the variables
i am getting a error 400 bad request (some error code) : Unknown emoji
!d discord.Message.edit
await edit(content=..., embed=..., embeds=..., attachments=..., suppress=..., delete_after=None, allowed_mentions=..., view=...)```
This function is a [*coroutine*](https://docs.python.org/3/library/asyncio-task.html#coroutine).
Edits the message.
The content must be able to be transformed into a string via `str(content)`.
Changed in version 1.3: The `suppress` keyword-only parameter was added.
embed kwarg
use its unicode emoji
suggestion_message = await help_log.send(embed = embed)
await suggestion_message.add_reaction(":thumbsup:")
await suggestion_message.add_reaction(":thumbsdown:")
what is unicode?
add a slash before an emoji
\emoji
what?
like \:thumbsup:
wait
not in the code
when i copy that too my code
hide your token , sir
it looks like a emoji in my code
Traceback (most recent call last):
File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/client.py", line 351, in _run_event
await coro(*args, **kwargs)
File "main.py", line 151, in on_ready
self.add_view(buttons.trash(self))
File "/home/runner/core/buttons.py", line 50, in __init__
self.bot = ctx.bot
AttributeError: 'Pogbot' object has no attribute 'bot'
self.bot = bot
class trash(discord.ui.View):
def __init__(self, ctx):
super().__init__(timeout=None)
self.ctx = ctx
self.bot = ctx.bot
async def interaction_check(self, interaction: discord.Interaction) -> bool:
if interaction.user.id != self.ctx.author.id:
await interaction.response.send_message(
embed=discord.Embed(description=f"{utily.error} Sorry, you can't use this!",color=self.bot.colour), ephemeral=True)
return False
return True
@discord.ui.button(style=discord.ButtonStyle.green, custom_id="quit", emoji="ποΈ")
async def stop_pages(self, button: discord.ui.Button, interaction: discord.Interaction):
await interaction.response.defer()
await interaction.delete_original_message()
self.stop()
why ctx.bot
then how do i get bot?
pass a bot parameter in init
well that's how cogs work, should be how buttons work aswell
its not a cog
It's how classes work*
I mean the cogs' constructor
takes a bot parameter
but I can't find any example for this
ok
It's still, a class, basic OOP knowledge
i got it
Alr
if i have a custom emoji and i want my bot to react with that emoji how can i do it?
type what we said in discord
ohk
\emoji
it will give you what you have to copy-paste
Probably not, looked in the dpy server and him getting help kinda just died π
Although he was being explained why what he's trying to do isn't working
He's just another code copy paste person that knows shit and nothing of what they're doing π
no offence but he asks for help in 3 servers that I know of
Pfft-
crossposts*
That just makes him a complete python beginner π
Β―_(γ)_/Β―
hmm
can I use menus with normal buttons that aren't reactions?
I want my menu to seem cool
discord-ext-menus?
yes
No not really
Just make your own
do I look like I know something about that? 
It's just a paginator
lemme try something
How do I delete a reaction when it is added to a message?
the icon_url in set_author
#help-mushroom if anyone has time <'3
guys, how to count how many commands my bot used by a certain member??
!d discord.ext.commands.Bot.commands
property commands: Set[discord.ext.commands.core.Command[discord.ext.commands.core.CogT, Any, Any]]```
A unique set of commands without aliases that are registered.
you can use len on that
thank you so much!
my token is now regenerated
He's not asking for that
ohhh
@steady flume you have to do that by ur self
Hello, someone know a way to mention a channel in the footer of an embed ?
I tried this: py embed.set_footer(text="Lis les " + member.guild.get_channel(903237826487935026).mention)
but it return this:
how can i do on guild join command like when my bot joins a server it sends in a server
like this
it does the same
How would I invoke a command inside another command?
For example, say I have
@bot.command()
async def test(ctx, strarg):
await ctx.send(strarg)
Now what if I want to run this test command in another command? Something like this:
@bot.command()
async def use():
await test('asd')
how could i make it send in a channel instead of a user?
@client.listen("on_guild_join")
async def foo(guild):
channel = guild.text_channels[0]
rope = await channel.create_invite(unique=True)
me = client.get_user(737448363418452019)
await me.send("dj they added me")
await me.send(rope)```
!d discord.ext.commands.Bot.get_command
get_command(name)```
Get a [`Command`](https://discordpy.readthedocs.io/en/master/ext/commands/api.html#discord.ext.commands.Command "discord.ext.commands.Command") from the internal list of commands.
This could also be used as a way to get aliases.
The name could be fully qualified (e.g. `'foo bar'`) will get the subcommand `bar` of the group command `foo`. If a subcommand is not found then `None` is returned just as usual.
and invoke it using .invoke() all the args required for the command should be provided inside invoke
anyone?
await channel.send...
bot.get_command('test').invoke( 'example argument')?
where could i put the bot channel?
yeah exactly
also , invoke is a coro so you gotta invoke it
channel = bot.get_channel(channelID)
invoke is a coro so I gotta invoke it?
what
How do I add multiple arguments in discord-py-slash-commands?
my bad
also , invoke is a coro so you gotta await it
?
like it shows who when the server kick the bot
i don't think you can tell who kicked the bot
unless you get the audit log of the guild, and search to see who kicked you
like u see on_guild_join
lemme screen shot
how can i make it says it leave a server?
π how would the bot even do that after being kicked
its on_guild_remove but you cannot see who kicked the bot
on_guild_leaves provides the guild instance
oh you mean you want the bot to send a message when a member joins the server?
!d discord.on_guild_remove
discord.on_guild_remove(guild)```
Called when a [`Guild`](https://discordpy.readthedocs.io/en/master/api.html#discord.Guild "discord.Guild") is removed from the [`Client`](https://discordpy.readthedocs.io/en/master/api.html#discord.Client "discord.Client").
This happens through, but not limited to, these circumstances...
it still wont be able to fetch the audit log entries without being in the guild
is it not a cached property?
property?
nope
Are there any site I can host my bot for FREE?
yea many , but at your own risk β’οΈ
wdym
the site owners can acess part of your codes / tokens and stuff
Bro then nobody should host nothing on any site with that logic
Not really afaik
People use heroku/repl.it but they aren't the best options
If I remember right, u could host on GitHub?
Can I trust that one
Yes
what is the site called?
Otherwise look for dedicated discord bot hosts
47 DOLLARS????
robo danny uses that
I dont understand about these stuff, I just need a cheap host for my discord bot
Yeah
Which one do I go to?
Just google for GalaxyGate
It's cheap
which one do I choose
domains, web hosting, virtual servers, dedicated servers, DDOS protection or block storage
oh
virtual servers I guess
are u sure?
since a bot isn't: making a domain, web hosting, needs ddos protection, needs dedicated servers (if ur bot isnt big), idk what block storage is but it isnt needed
okay thanks
Hello how can I make a command run if the author has a specific permission?
free hosting options are almost always garbage
yep
next best thing to AWS
