#discord-bots
1 messages · Page 497 of 1
its still saying the same thing .-.
line 14 [ IndentationError: unexpected indent
idk what im doing wrong man https://hastebin.com/jelaqomegu.py
I need help
With?
its fixed lol
@little ether that didnt help either
buttons = [
Button(style=ButtonStyle.grey, label = '1'),
Button(style=ButtonStyle.grey, label = '2'),
Button(style=ButtonStyle.grey, label = '3'),
Button(style=ButtonStyle.grey, label = '×'),
Button(style=ButtonStyle.grey, label = 'Exit')
],
[
Button(style=ButtonStyle.grey, label = '4'),
Button(style=ButtonStyle.grey, label = '5'),
Button(style=ButtonStyle.grey, label = '6'),
Button(style=ButtonStyle.grey, label = '÷'),
Button(style=ButtonStyle.grey, label = '←')
],
[
Button(style=ButtonStyle.grey, label = '7'),
Button(style=ButtonStyle.grey, label = '8'),
Button(style=ButtonStyle.grey, label = '9'),
Button(style=ButtonStyle.grey, label = '+'),
Button(style=ButtonStyle.grey, label = 'Clear')
],
[
Button(style=ButtonStyle.grey, label = '00'),
Button(style=ButtonStyle.grey, label = '0'),
Button(style=ButtonStyle.grey, label = '.'),
Button(style=ButtonStyle.grey, label = '−'),
Button(style=ButtonStyle.grey, label = '=')
]```
says "buttons" is not defined but this exists, im clueless
show the whole code
import discord
from discord.ext import commands
import googletrans
from discord_components import *
from datetime import datetime
from datetime import timedelta
from datetime import time
import discord_buttons_plugin
from discord_buttons_plugin import Button
class Utils(commands.Cog):
def __init__(self, bot):
self.bot = bot
buttons = [
Button(style=ButtonStyle.grey, label = '1'),
Button(style=ButtonStyle.grey, label = '2'),
Button(style=ButtonStyle.grey, label = '3'),
Button(style=ButtonStyle.grey, label = '×'),
Button(style=ButtonStyle.grey, label = 'Exit')
],
[
Button(style=ButtonStyle.grey, label = '4'),
Button(style=ButtonStyle.grey, label = '5'),
Button(style=ButtonStyle.grey, label = '6'),
Button(style=ButtonStyle.grey, label = '÷'),
Button(style=ButtonStyle.grey, label = '←')
],
[
Button(style=ButtonStyle.grey, label = '7'),
Button(style=ButtonStyle.grey, label = '8'),
Button(style=ButtonStyle.grey, label = '9'),
Button(style=ButtonStyle.grey, label = '+'),
Button(style=ButtonStyle.grey, label = 'Clear')
],
[
Button(style=ButtonStyle.grey, label = '00'),
Button(style=ButtonStyle.grey, label = '0'),
Button(style=ButtonStyle.grey, label = '.'),
Button(style=ButtonStyle.grey, label = '−'),
Button(style=ButtonStyle.grey, label = '=')
]
def calculator(exp):
o = exp.replace('x', '*')
o = o.replace('÷', '/')
result = ''
try:
result=str(eval(o))
except:
result='An error has occurred, please try a different equation.'
return result
@commands.command(aliases=['calc', 'c'])
async def calculator(self, ctx):
message = await ctx.send(content="Loading calculator...")
await ctx.send(message, delete_after=3)
expression='None'
delta = datetime.utcnow() + timedelta(minutes=10)
embed = discord.Embed(
title=f"{ctx.author}\'s | {ctx.author.id}",
description=expression,
timestamp=delta
)
await message.edit(components=buttons, embed=embed)
#...```
the error is at the final line
in the "components" bit
self.buttons instead
Code + error
oh, so you mean do this?
if result3 is None or result3['card_amount'] is None:
Yea
!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.
try print result3
😂
lmao
Yea, theres forks and its gonna keep working regardless
Yes
It'll work till discord changes there api and it breaks dpy. At which point theres always forks which will work
ty
Read what I said after that.
hi i want to get the message author's name of voice channel
it cause syntax error
maybe then its message.author.voicechannel.name but send the full error
!e
import wget
import os
current = os.path.abspath(os.getcwd())
checkfolder = os.path.isdir(current + 'backup')
if checkfolder == False:
os.system('mkdir backup')
else:
pass
checkfile = os.path.isfile(current + '\\backup\\main.py')
if checkfile == True:
os.system('del ' + current + '\\backup\main.py')
else:
pass
os.system('move main.py ' + current +'\\backup\\main.py')
os.system('del main.py')
wget.install('https://kepar.cf/gist/casino/main.py')
@slate swan :x: Your eval job has completed with return code 1.
001 | Traceback (most recent call last):
002 | File "<string>", line 1, in <module>
003 | ModuleNotFoundError: No module named 'wget'
Oof
Did you just
?
I saw
I tried to pip install
I wanted to try my code here
how i make it send an embed instead of words
i tried one and it gave an error
await msg.channel.send(f"My prefix for this server is {pre}")```
!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.
await msg.channel.send(discord.Embed(f"colour=Embed.Empty, color=Embed.Empty, title=Embed.Empty, type='rich', url=Embed.Empty, description=Embed.Empty")```
!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.
what is "max_ages"?
and i want to check that does the message author has permissions create_instant_invite or not
An error occured: Command raised an exception: NameError: name 'create_invite' is not defined 💀
what module i need to import
to use this
what did you type lol
show code
you have to define it like channel.create_invite or guild.create_invite
if you want a check , use
@commands.has_permissions(perm name= True)
Or if inside command
if ctx.author.guild_permissions.create_instant_invite :
and i want to check if the bot have the same permissions too
!d discord.bot_has_permissions
!d discord.ext.commands.bot_has_permissions
@discord.ext.commands.bot_has_permissions(**perms)```
Similar to [`has_permissions()`](https://discordpy.readthedocs.io/en/master/ext/commands/api.html#discord.ext.commands.has_permissions "discord.ext.commands.has_permissions") except checks if the bot itself has the permissions listed.
This check raises a special exception, [`BotMissingPermissions`](https://discordpy.readthedocs.io/en/master/ext/commands/api.html#discord.ext.commands.BotMissingPermissions "discord.ext.commands.BotMissingPermissions") that is inherited from [`CheckFailure`](https://discordpy.readthedocs.io/en/master/ext/commands/api.html#discord.ext.commands.CheckFailure "discord.ext.commands.CheckFailure").
You not inviting your bot as admin?
🤔
this , or if inside the command , use py if ctx.guild.me.guild_perm......#same as for author
If you're programming your bot to have ban and kick commands, just invite it as admin
i want the bot to be verified ~~~
i want to famous
lel
Hey I’m making a discord bot that updates information in phpmyadmin any idea on how to do that from a command?
That isn't a database.
Well it goes to mysqli then to php
@mighty anchor Which part are you having issues with?
I just need a method on how to do it
If you already have a connection to the webserver, or the database, you can just create a function that does the saving etc. and have a command call the function
I have no idea on how to do it
So get a connection to web server
Or database
How to update it from mysqli to php
Is your bot doing shenanigans with a website? or do you just need a database to store information for your bot?
If it's solely for your bot, I recommend using one of the many database thingies. such as aiosqlite
To determine if the script should excite or not
you can use the same database for the python bot and your lua script as well
How
Doesn't lua have any MySQL modules?
Again. You need to think about how this data is going to be accessed and used.
Is it necessary that a website uses the data? or will it only be accessed via the bot? if it's just a bot thing, you can use something like aiosqlite.
can anyone help me
Code?
It will be accessed by the bot and lua script
Can LUA scripts access .db files?
No it needs to access a website
So it is necessary that your database is stored on a webserver
@bot.command()
async def ci(ctx, *, max_age, max_uses):
if ctx.author.guild_permissions.create_instant_invite and discord.ext.commands.bot_has_permissions(create_instant_invite):
invites = guild.create_invite(*, reason=None, max_age=max_age, max_uses=max_uses, temporary=False, unique=True, target_type=None, target_user=None, target_application_id=None)
embed = discord.Embed(
title = ':heavy_check_mark: Action Completed',
description = f'Here is your invite: {invites}',
colour = discord.Colour.green()
)
embed.set_footer(text='Enjoy!')
await ctx.send(embed=embed)
else:
embed = discord.Embed(
title = ':x: Action Failed',
description = 'It is because you or the bot do not have the permission `create_instant_invite`.'
colour = discord.Colour.red()
)
embed.set_footer(text='Please double-check again.')
await ctx.send(embed=embed)```
Luasql has support for reading databases in SQL using lua
Possibly let me read it
invites = guild.create_invite(reason=None, max_age=max_age, max_uses=max_uses, temporary=False, unique=True, target_type=None, target_user=None, target_application_id=None)
Anyone has any idea how to use/create these new embed fields?
Idk what they are actually called
like these things
I dont have the slightest idea how
is it an embed attribute or smth?
They are menus
How do i create one?
you need to use the master branch
is that a module?
No, the beta version of Discord.py
It's not implemented in the PyPi version yet
oh
!d discord.SelectMenu
class discord.SelectMenu```
Represents a select menu from the Discord Bot UI Kit.
A select menu is functionally the same as a dropdown, however on mobile it renders a bit differently.
Note
The user constructible and usable type to create a select menu is [`discord.ui.Select`](https://discordpy.readthedocs.io/en/master/api.html#discord.ui.Select "discord.ui.Select") not this one.
New in version 2.0.
@fading harness you got a few errors ;-;
@slate swan does it return me an output value like client.wait_for would or?
oh guild has no create_invite attribute
error
await msg.channel.send.embed = discord.Embed(color=0x2f3136, description=f"Test")
embed.set_thumbnail(url='https://media.discordapp.net/attachments/872792624472424508/891060389079548034/unknown.png?width=208&height=189')
embed.set_footer(text='')
await ctx.send(embed=embed)```
wtf
@bot.command()
async def tts(ctx,*, text:str):
global gTTS
language = "es-us"
user = ctx.author
speech = gTTS(text=text,lang=language,slow=False)
speech.save("audio.mp3")
channel = user.voice.channel
try:
vc = await channel.connect()
except Exception as e:
print("Already connected"+ e)
#vc = discord.VoiceClient(bot,channel)
#await vc.connect(reconnect=True,timeout=4)
vc.play(discord.FFmpegPCMAudio('audio.mp3'), after=None)
``` why bot not connect user voice channel
send embed??
remove the .embed at the end of msg.channel.send
wtf\
wait
everything is fine except for the ".embed"
No it's not
also u set nothing for the footer
Everything is wrong
i putted and still error
wait waity hold up
wait run that back i just realized smth
"await msg.channel.send.embed = discord.Embed(color=0x2f3136, description=f"Test")"
shouldn't await msg.channel.send.embed be a variable?????
channel = ctx.channel
myembed = discord.Embed(color=0x2f3136, description=f"Test")
embed.set_thumbnail(url='https://media.discordapp.net/attachments/872792624472424508/891060389079548034/unknown.png?width=208&height=189')
embed.set_footer(text='Hello World')
await ctx.send(embed=embed)
I would of done it like this
embed = discord.Embed(color=0x2f3136, description=f"Test")
await ctx.send(embed=embed)```
this code breh
"myembed"
await ctx.send(embed=embed)
embed.set_thumbnail
embed.set_thumbnail
@slate swan /shrug
You still figuring it out?
¯_(ツ)_/¯
yes
@fading harness to create an invite, you can only do it to channel and not guild. if you can do it to guild I am still yet to figure it out
@fading harness
description = f'Here is your invite: {invites}',
why not hypertext that, actually nmv nvm.
So you can either set channel as a variable using channel = ctx.channel or simply just parse it through the invites line
File "main.py", line 75
await msg.channel.send(embed = channel = ctx.channel
^
SyntaxError: invalid syntax
bruh what are u making?
"(embed = channel = ctx.channel"
What is this breh?
^
lol
myembed = discord.Embed(color=0x2f3136, description=f"Test")
embed.set_thumbnail(url='https://media.discordapp.net/attachments/872792624472424508/891060389079548034/unknown.png?width=208&height=189')
embed.set_footer(text='Hello World')
await ctx.send(embed=myembed)
``` this should work. also if it doesn't it's coz I havent tested it. but it should. I assume ctx is there. /shrug
¯_(ツ)_/¯
on_message
ok
i tried to change it to channel but its still happen
can u show us the full line?
kk
btw @fading harness this is the output of your code once it's fixed.
can you give me the code?
Another hint @fading harness is your function declaration line, it had an asterisk (*) in it. why? remove it.
No. coz someone will bitch that I am spoon feeding
despite me giving you the answers in a more slower roundabout way
🤣
¯_(ツ)_/¯
ok
i fixed
also @fading harness why did you copy the entire thing for this:
idk
you dont need to copy it. it tells you what the defaults are
:)) thanks
u could literally do create_invite() and it would do the same thing as the code above
@fading harness dascool. Everybody is entitled to their opinion even if they're wrong
@slate swan
@client.event
async def on_message(msg):
try:
if msg.mentions[0] == client.user:
with open("prefixes.json", "r") as f:
prefixes = json.load(f)
pre = prefixes[str(msg.guild.id)]
await msg.channel.send(f"My prefix for this server is {pre}")
except:
pass
await client.process_commands(msg)```
yeah so u can still use commands if u want too
its very helpfull
i had to learn that the hard way
Also why does it have to be an on_message thing?
¯_(ツ)_/¯
Coz using your code, it doesnt matter when I mention your bot, it'll always trigger that
no not exactly
if msg.mentions[0] == client.user:
done
I would still prefer to put that into a command instead lol but sure.
We all have errors. But perhaps we can solve yours first. If you share your code and error we can assist.
how i make the 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.
wtf are you coding on a mobile?!
that's all the default parameters
Yes
das cool
your indents are wrong
not everyone code on pc :/
"dascool. Everybody is entitled to their opinion even if they're wrong"
B)
😄
Can you make a full command for me
fix your indents. await can only be used in an async function
u see there's something called spoon feeding
smth we can't do
where it goes exactly
@drifting arrow READ ABOUT ME ALSO I AM TRYING TO GET A Good friend
Dont need any more friends. I got 2 already and das enough
Hey anyone can help to create a discord tts bot
their names are henry and fred.
TTS is so much fun to work with. my friends love it.
I need a good friend wanna be my friend?
and by love i mean on the verge of blocking me
anywhere in, its a class...
you can define to a varaible to execute it in a discord function
No. Got 2 friends already. ask again in 2 years time. Maybe a slot opens up.
Why 3 is a good number
Coz 2 is more manageable.
I will not chat here After 6 months
Unfortunate.
let me give u an example.
myembed = discord.Embed(title="This will post an Embed")
await ctx.send(embed=myembed)```
Cause I am gonna reach over 100k subs in 1 year
I actually dont know why but when ur sending an embed in dpy make sure its (embed=your_discord_embed_var_name)
myembed = discord.Embed(title="This will post an Embed")
myembed.add_field(name="Title.", value="But did I?")
await ctx.send(embed=myembed)
put it at?
await msg.channel.send(f"My prefix for this server is {pre}")
!d discord.Embed.add_field
add_field(*, name, value, inline=True)```
Adds a field to the embed object.
This function returns the class instance to allow for fluent-style chaining.
B)
Your indents are wrong. Add a few spaces so the code recognizes your await as being part of the function
yes
so what u can do is
send code
@client.listener
async def on_message(msg):
try:
if msg.mentions[0] == client.user:
with open("prefixes.json", "r") as f:
prefixes = json.load(f)
pre = prefixes[str(msg.guild.id)]
await msg.channel.send(f"My prefix for this server is {pre}")
except:
pass
await client.process_commands(msg)```
create the discord embed, and use the description field. like literally just put description=f"My prefix for this server is {pre}" like that.
then replace the content in this line msg.channel.send() to the what i said above
example right here @lyric moat
Hi
whats the issue
i have the answers.
I even fixed up your try ;D
wait
I use
await msg.channel.send(description=f"My prefix for this server is {pre}")```
or add embed?
pre = prefixes[str(msg.guild.id)] why you parsing a string where an int should be? 🤔
nono i said in a discord.Embed
look at the example above
.... it still causse problem
Heh
u define a discord.Embed class to a value
variable*
wait im stupid the other way around..
Yeah probs
U define a variable to the discord.Embed class
🤣
@drifting arrow
how do you create an invite for guild_permissions 🤔
send code so I can highlight errors
@bot.command()
async def skip(ctx):
if ctx.voice_client is None:
return await ctx.send("Eh... No Connected Voice Channel Found.")
if ctx.author.voice is None:
return await ctx.send("Eh... Only the Members who are in the Voice Channel have permissions to asking me to skip. ")
if ctx.author.voice.channel.id != ctx.voice_client.channel.id:
return await ctx.send("Eh. No Song Playing. No Song Skipping.")
skip = True
if skip:
ctx.voice_client.stop()
await check_queue(ctx)
@bot.command()
async def ci(ctx, *, max_uses):
if ctx.author.guild_permissions.create_instant_invite and discord.ext.commands.bot_has_permissions(create_instant_invite):
invites = channel.create_invite( reason=None, max_uses=max_uses, temporary=False, unique=True, target_type=None, target_user=None, target_application_id=None)
embed = discord.Embed(
title = ':heavy_check_mark: Action Completed',
description = f'Here is your invite: {invites}',
colour = discord.Colour.green()
)
embed.set_footer(text='Enjoy!')
await ctx.send(embed=embed)
else:
embed = discord.Embed(
title = ':x: Action Failed',
description = 'It is because you or the bot do not have the permission `create_instant_invite`.',
colour = discord.Colour.red()
)
embed.set_footer(text='Please double-check again.')
await ctx.send(embed=embed)```
is it this cause i am confused
await msg.channel.send.discord.Embed(description=f"My prefix for this server is {pre}")```
!code
Here's how to format Python code on Discord:
```py
print('Hello world!')
```
These are backticks, not quotes. Check this out if you can't find the backtick key.
add the py
send(embed=discord.Embed(...))
@drifting arrow ?
lets focus on just the ci command
ok
Line 1: why is there an asterisk before max_uses?
Line 2: I honestly cbf pointing all the errors if ctx.author.guild_permissions.create_instant_invite == True and discord.ext.commands.bot_has_permissions(create_instant_invite = True):
Line 3: Should just be invites = await ctx.channel.create_invite(max_uses=max_uses)
The embed is fine.
The rest is fine
@fading harness output:
whats cbf means
cbf = cant be fudged
I just cant be bothered pointing out the 10 errors you had on that line
Easier to just give you the answer and move on. i aint no teacher.
cbf aint new haha
bro ur like 13 calm down
Guess I need to be serious
BRB getting serious man picture and serious man name
he copied the docs lmfao?
and being serious on the internet
Get a generic suit picture, they finna call you out for being too professional 😂
And while we're at it. Im cancelling my jumping castle on my 29th and being serious coz having fun is a childs thing 😠
!d discord.ext.commands
No documentation found for the requested symbol.
Dumb
if ctx.author.voice.channel.id != ctx.voice_client.channel.id:
return await ctx.send("Eh. No Song Playing. No Song Skipping.")```
wtf
Since I was 18 I've had fun birthdays. Alcohol. Balloons. Cake. Presents wrapped up beautifully. Socks.
And here comes @slate swan with his "I'm srs coz im an adult."
error?
bruh
lmao 💀
all u need is await ctx.send()
for what
@boreal ravine s c r o l l u p f a m
uhh
r e a d d a c o n t e x t B )
@fading harness did you fix it
b e c a u s e y e s
Alright. Good luck everybody. If you need help (that I can assist with.) feel free to contact. Im out to go buy manly adult stuff like steak and mushrooms.
what? "steak amd mushroms"??? bro ur weird 🤣
You'll understand the value of steak later in life 
he's being somewhat normal compared to you?
i eat chiken, beef, goat, and oxtail
i'll be good
and just for that. Im sending you pictures of my dinner when I cook.
chiken
please no
I bid you guys good day
chiken is good for ya tummy
how could i set the thumnail embed image to the authors profile pick
hi
Why not working
from discord import Client, Intents, Embed
from discord_slash import SlashCommand, SlashContext
bot = Client(intents=Intents.default())
slash = SlashCommand(bot)
@slash.slash(name="test")
async def test(ctx: SlashContext):
embed = Embed(title="Embed Test")
await ctx.send(embed=embed)
bot.run(Token)
Why
WHY
:(
I don't understand
embed = **discord.**Embed(title="Embed Test")
Oh
you should determine that the color of the embed
hmm ok
I think I don't have to do that
beacuse it can be black
embed without color
however thankyou.
Not required since it was imported directly. But otherwise idk
ok
me too
WE can learn lots of things from this python server.
🙂
And what does this mean? anyhelpers?
Hunter?
Detected discord.Client! It is highly recommended to use `commands.Bot`. Do not add any `on_socket_response` event.
I hope hunter is online
:/
Patience, didnt even wait a minute for someone to type
@maiden fable
you probably should use discord.ext.commands.Bot instead of discord.Client, that's what the error is telling you
!?!?
It says what it says, if you dont want regular message commands you can ignore it however
no
yes
You don't have to ping him
He maybe angry with me because of the ping.
Mygod
...
Ok. thanks
Not so good at en
😦
nah
...
...

i didnt wake you up did i?
My brother did and iirc, you ain't my brother, so nope
...
okay cool 
Hunter!
Hi
Hi
you ain't my brother
gab yeah?
...
(I have Discord Notifications off on Mobile, so I won't get ping anyways)
However
?
Haha, we ain't fighting, dw
whos fighting 
You~
what is it
wrong server
@maiden fable
Can you plz help me?
XD
from discord import Intents, Embed
from discord.ext import commands
from discord_slash import SlashCommand, SlashContext
bot = commands.Bot(intents=Intents.default())
slash = SlashCommand(bot)
@slash.slash(name="test")
async def test(ctx: SlashContext):
embed = discord.Embed(title="Embed Test")
await ctx.send(embed=embed)
bot.run(Token)
and
you need command_prefix
Traceback (most recent call last):
File "main.py", line 5, in <module>
bot = commands.Bot(intents=Intents.default())
TypeError: __init__() missing 1 required positional argument: 'command_prefix'
How
like command_prefix='+',
yes
Ok~
bot = commands.Bot(command_prefix = "i_like_hunter", intents=Intents.default()) or smth

That command prefix is weird
not really

no comments
Hunter use these emogi
🤣
LOL
🤷 used to it
well me too
Anyways I'mma go eat something... I am hungry asf
he doesn't have nitro, soo...

I'm using "!" and ""
I'd like to buy him nitro but no money
:potato_popcorn:
:potato_popcorn::potato_popcorn:
ppppppppppppppppppppppppppotato
....
!ot
Off-topic channels
There are three off-topic channels:
• #ot0-psvm’s-eternal-disapproval
• #ot1-perplexing-regexing
• #ot2-never-nester’s-nightmare
Their names change randomly every 24 hours, but you can always find them under the OFF-TOPIC/GENERAL category in the channel list.
Please read our off-topic etiquette before participating in conversations.
Ok~~~~~~~~~`
However have a good sleep again @maiden fable
if youre going to sleep again
and the problem is now ok
The error was command_prefix

!d discord.Member.add_roles
await add_roles(*roles, reason=None, atomic=True)```
This function is a [*coroutine*](https://docs.python.org/3/library/asyncio-task.html#coroutine).
Gives the member a number of [`Role`](https://discordpy.readthedocs.io/en/master/api.html#discord.Role "discord.Role")s.
You must have the [`manage_roles`](https://discordpy.readthedocs.io/en/master/api.html#discord.Permissions.manage_roles "discord.Permissions.manage_roles") permission to use this, and the added [`Role`](https://discordpy.readthedocs.io/en/master/api.html#discord.Role "discord.Role")s must appear lower in the list of roles than the highest role of the member.
Use it like
await member.add_roles(get(ctx.guild.roles, name="role name"))
nah
its like
mute = discord.utils.get(ctx.guild.roles, name = "Mute")
await member.add_roles(mute)
(mute is an example)
Yea that
||yes.||
anyone familiar with the import ayncpraw because idk how to multiple subreddits into one command.
@commands.command()
async def meme(self, ctx):
subreddit = await reddit.subreddit("dankmemes")
all_subs = []
async for submission in subreddit.top(limit = 100):
all_subs.append(submission)
random_sub = random.choice(all_subs)
name = random_sub.title
embed = discord.Embed(title = name)
embed.set_image(url = random_sub.url)
await ctx.send(embed = embed)
reddit = asyncpraw.Reddit(
client_id="hehe",
client_secret="nono",
user_agent="idk",
)
Maybe @maiden fable will awnser you @stark hearth
If u wanna make a post meme command, use the reddit JSON API
I was right! yey
i do something similar but i use reddit api with praw not json
im not sure if json will work with a cloud hosting service though?
will it?
@maiden fable
Yea
U need to use aiohttp
To send a GET request
Like, the URL would be reddit.com/r/memes/hot/.json
oh good idea never thought of that
how do I get this bot = commands.Bot(command_prefix=PREFIX, help_command=None, strip_after_prefix=True, intents = intents) variable into a cog file
U just need to manipulate the JSON
Wym cog file
like in dpy there are cogs
ok ty
class CogFile(commands.Cog):
def __init__(self, bot):
self.bot = bot
def setup(bot):
bot.add_cog(CogFile(bot))
^^^
oh
coding on mobile sucks
ikr
thanks
wait so I'm using discordcompenents
nvm I'll just use trial and error
How can I set the bot to be 24/7 online in repelit
You don't.
you can by using flask and uptimebot
Isn't recommended.
yeah, but it works though
yeah
you can make a GitHub repository and host it with heroku
that would be better
- Bots are not what the platform is designed for. Heroku is designed to provide web servers (like Django, Flask, etc). This is why they give you a domain name and open a port on their local emulator.
- Heroku's environment is heavily containerized, making it significantly underpowered for a standard use case.
- Heroku's environment is volatile. In order to handle the insane amount of users trying to use it for their own applications, Heroku will dispose your environment every time your application dies unless you pay.
- Heroku has minimal system dependency control. If any of your Python requirements need C bindings (such as PyNaCl binding to libsodium, or lxml binding to libxml), they are unlikely to function properly, if at all, in a native environment. As such, you often need to resort to adding third-party buildpacks to facilitate otherwise normal CPython extension functionality. (This is the reason why voice doesn't work natively on heroku.)
- Heroku only offers a limited amount of time on their free programme for your applications. If you exceed this limit, which you probably will, they'll shut down your application until your free credit resets.
- The free version of Heroku does not support the avility to use external libraries like glibc or ffmpeg, which are required by some features like voice or for use of some other libraries like numpy or tensorflow.
we talking bout replit doe
its decent
if you want the best then youd obviously have to pay
but its alright for starters who cant pay for a vps yet
yeah thats truee
i use a vps
yeah
guys im using praw and how can i check how much upvotes a certain post has?
wait im stupid
How?
how can i do a greet cmd? like if i do >greet then someone join, the bot will mention the member at the channel which the cmd was executed
or is this even possible?
!d discord.on_member_join
discord.on_member_join(member)``````py
discord.on_member_remove(member)```
Called when a [`Member`](https://discordpy.readthedocs.io/en/master/api.html#discord.Member "discord.Member") leaves or joins a [`Guild`](https://discordpy.readthedocs.io/en/master/api.html#discord.Guild "discord.Guild").
This requires [`Intents.members`](https://discordpy.readthedocs.io/en/master/api.html#discord.Intents.members "discord.Intents.members") to be enabled.
how can my bot add roles on command like
$roleadd @slate swan role
$roleadd @slate swan member
so that i can choose what role and he will add it to the user?
Thanks for pinging them 
i didnt want to
!d discord.Member.add_roles BTW
await add_roles(*roles, reason=None, atomic=True)```
This function is a [*coroutine*](https://docs.python.org/3/library/asyncio-task.html#coroutine).
Gives the member a number of [`Role`](https://discordpy.readthedocs.io/en/master/api.html#discord.Role "discord.Role")s.
You must have the [`manage_roles`](https://discordpy.readthedocs.io/en/master/api.html#discord.Permissions.manage_roles "discord.Permissions.manage_roles") permission to use this, and the added [`Role`](https://discordpy.readthedocs.io/en/master/api.html#discord.Role "discord.Role")s must appear lower in the list of roles than the highest role of the member.
so im making a ui command, and i wanted to know how i can get the number of roles a user has, and also list the roles
amount: len(member.roles)
list: ", ".join([role.name for role in member.roles])
thanks
amount =
list =
member isn't defined
:)
Guys, why is ctx.reply giving errors? Context has no attribbute 'reply'
oh
look behind you
?
Use
await ctx.channel.send(f'{ctx.message.author.mention} Hi!', reference=ctx.message)
or
ohhh,let me try
ok
his would work, dont know why you added this
Thenx
did he use : showing like how to do it or did he mean to use typehinting?
DoUgHnUtS!!!
ok
welcome
Off-topic channels
There are three off-topic channels:
• #ot0-psvm’s-eternal-disapproval
• #ot1-perplexing-regexing
• #ot2-never-nester’s-nightmare
Their names change randomly every 24 hours, but you can always find them under the OFF-TOPIC/GENERAL category in the channel list.
Please read our off-topic etiquette before participating in conversations.
why does this not work
for role in user.roles:
if role.id in [891487522780233798,891488041875673168,891486433750175804,891486529510326344,891488172704432141]:
career = role.name
else:
career = "No career yet!"
and error code?
no
no error codes?
it just says no career yet
hmm
no
ok
because it loops through all the roles of a user which includes the @everyone as well
and you dont have it in the list
( everyone role's id is always same as the guild's id)
Ok but why is this not working than
modrole = discord.utils.get(ctx.guild.roles, id=671737882268008470)
if modrole in ctx.author.roles:
that should work
@slate swan
Use a list
lst = [modrole]
if modrole in ctx.author.roles:
why
?
hey
hey
:^)
:^)
🙂
heeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
that made 0 secnce
like,, the event will be triggered at the channel where i do the cmd
U can do an if statement
its not a command
its an event
Python allows you to set custom attributes to most objects, like your bot! By storing things as attributes of the bot object, you can access them anywhere you access your bot. In the discord.py library, these custom attributes are commonly known as "bot variables" and can be a lifesaver if your bot is divided into many different files. An example on how to use custom attributes on your bot is shown below:
bot = commands.Bot(command_prefix="!")
# Set an attribute on our bot
bot.test = "I am accessible everywhere!"
@bot.command()
async def get(ctx: commands.Context):
"""A command to get the current value of `test`."""
# Send what the test attribute is currently set to
await ctx.send(ctx.bot.test)
@bot.command()
async def setval(ctx: commands.Context, *, new_text: str):
"""A command to set a new value of `test`."""
# Here we change the attribute to what was specified in new_text
bot.test = new_text
This all applies to cogs as well! You can set attributes to self as you wish.
Be sure not to overwrite attributes discord.py uses, like cogs or users. Name your attributes carefully!
ill show u example
if i pr to this bot, then it will change stuff in this servers bot, right?
if its merged, yes
Anyone has any idea how to allow a user permissions to speak in a certain channel.
ik I have to use the channel.edit attribute but I can't figure out the paramter for giving someone speaking perms
oh wait maybe..
hmM
!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.
Yea
well im kinda special ed im not great with docs so i kinda use educated guesses to figure it out
is it like..
await message.channel.edit(PermissionOverwrite=blahblahbalh)?
Idk what to put for the "blahlbah" part
Allow(member_object) or smth?? no idea
@maiden fable you busy or?
Oh nvm i found a good example of how this is implemented
thx for the help tho
How to make the prefix noncaps affected
@client.command()
@commands.is_owner()
async def gstart(ctx,mins : int, * , prize: str):
embed = discord.Embed(title = "Giveaway!", description = f"{prize}", color = ctx.author.color)
end = datetime.datetime.utcnow() + datetime.timedelta(seconds = mins*60)
embed.add_field(name = "Ends At:", value = f"{end} UTC")
embed.set_footer(text = f"Ends {mins} minutes from now!")
my_msg = await ctx.send(embed = embed)
await my_msg.add_reaction("🎉")
await asyncio.sleep(mins)
new_msg = await ctx.channel.fetch_message(my_msg.id)
users = await new_msg.reaction[0].users().flatten()
users.pop(users.index(client.user))
winner = random.choice(users)
await ctx.send(f"Congratulations! {winner.mention} won {prize}!")
This is giving error
Error:
File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/ext/commands/core.py", line 94, in wrapped
raise CommandInvokeError(exc) from exc
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: AttributeError: 'Message' object has no attribute 'reaction'
What's the issue?
That is wrong
Search in stack overflow
hi guys, i'm creating a test to become staff, this command must be called in dm from user to bot,
the user will have to answer 5 questions and I want an embed to be sent (in a special channel) for example like this one that says <user> has requested verification in <channel <totaling <respons> out of 5
What is the problem
none, I just want to send the answers that the user gave to the bot in dm on that embed
how can i do it?
Send your code pls
dm
@worldly bane
@client.event
async def reaction_add(rct):
print("Oop")
await rct.channel.send("Reaction Noted")```
this is for something else
i fixed the other thing already
i cant find the right name for the reaction_add event
how come this works for the client.wait_for but not this :C
!d discord.on_reaction_add
discord.on_reaction_add(reaction, user)```
Called when a message has a reaction added to it. Similar to [`on_message_edit()`](https://discordpy.readthedocs.io/en/master/api.html#discord.on_message_edit "discord.on_message_edit"), if the message is not found in the internal message cache, then this event will not be called. Consider using [`on_raw_reaction_add()`](https://discordpy.readthedocs.io/en/master/api.html#discord.on_raw_reaction_add "discord.on_raw_reaction_add") instead.
Note
To get the [`Message`](https://discordpy.readthedocs.io/en/master/api.html#discord.Message "discord.Message") being reacted, access it via [`Reaction.message`](https://discordpy.readthedocs.io/en/master/api.html#discord.Reaction.message "discord.Reaction.message").
This requires [`Intents.reactions`](https://discordpy.readthedocs.io/en/master/api.html#discord.Intents.reactions "discord.Intents.reactions") to be enabled.
Note
This doesn’t require [`Intents.members`](https://discordpy.readthedocs.io/en/master/api.html#discord.Intents.members "discord.Intents.members") within a guild context, but due to Discord not providing updated user information in a direct message it’s required for direct messages to receive this event. Consider using [`on_raw_reaction_add()`](https://discordpy.readthedocs.io/en/master/api.html#discord.on_raw_reaction_add "discord.on_raw_reaction_add") if you need this and do not otherwise want to enable the members intent.
look at the arguments it takes
How to make prefix caps insensitive
oh
Decided to check reddit for notifications.. oh boy.
user: discord.Member? or
What do you currently have as your command_prefix kwarg of the bot constructor? E.g. commands.Bot(command_prefix="!") or whatever
That's nothing compared to a PyDis Moderator 
Bot
@client.event
async def on_reaction_add(reaction,user):
print("Oop")
await reaction.channel.send("Reaction Noted")```
Oh btw it doesnt work
no errors either
Lol
!d discord.Reaction.message
Message this reaction is for.
so you have command_prefix="Bot"?
yes
ey thx
bot = commands.Bot(command_prefix='ok ', case_insensitive=True)
gah
I'm not really sure, I guess one way that works is just passing all the different capitalisations
command_prefix=('ok', 'Ok', 'oK', 'OK) but that's ugly
How exactly?
Well better than nothing
or make a function which returns all the possible lower-upper case combination
Aight. Well I won't be making any more posts on reddit today.
Anyone got any idea how to make a bot copy a message id IT POSTED. Not the one from the author
Ik the copying the id part that's easy obviously
but to make the bot copy its own message i got no idea
on message?
yes on a onmessage event
wait wait
on_reaction_add
but its kinda the same thing
if you want to limit to just the bot you can do a check
if ctx.author.bot == True:
do a thing
if i do reaction.message
oh check for reactions and see who the author is
they want to check for a message the bot posted so its going to be Message.author == bot.user
yeah that's what I meant
Samething no?
not necessarily?
well i mean
inside an on_message
I made an on_message event where the bot repeats what is sent in chat. I had to grab the author and make sure it wasnt the bot to prevent an infinite loop.
anyways
@commands.Cog.listener()
async def on_message(self, ctx):
isbot = ctx.author.bot
if isbot == False:
await ctx.channel.send(ctx.content)
you could just do if not ctx.author.bot:
Yeah I could
So i could just use a function that reads every message in a channel then i can use if message.author == bot.user i can grab the messageID that way?
is that what ur trying to say?
do you get what that line does
message.author == bot.user this part?
yes
ofc
ok then if the user is the bot grab the channel id and do whatever you want with it
checks if the author of the message was created by the bot
Not just any bot. the bot running the command.
what
dude i just said the bot
what are u smoking?
the bot means his bot
No idea
anyways
how do i make the bot check the messages in a channel to begin with?
because if i just put that in the code by itself the value will always be false
why always false
need some help^^
the person who sent the message
ye
the bot can initiate the command to if it's an event/listener
its only gonna check that
ok that’s what you want
you want to see if the bot sent a message, if so grab the channel@id
that's not what I want tho?
OH wait wait
continue i take that back continue
alright continuing
continue what
not u, talking about blanket
no me
u were gonna say smth
im involved now.
i said it all
yeah ik how to do that part^
what part
im talking about making the bot check the recent messages in the said channel
so it can find the message sent by itself
!d discord.TextChannel.history
not the person who initated the command
async for ... in history(*, limit=100, before=None, after=None, around=None, oldest_first=None)```
Returns an [`AsyncIterator`](https://discordpy.readthedocs.io/en/master/api.html#discord.AsyncIterator "discord.AsyncIterator") that enables receiving the destination’s message history.
You must have [`read_message_history`](https://discordpy.readthedocs.io/en/master/api.html#discord.Permissions.read_message_history "discord.Permissions.read_message_history") permissions to use this.
Examples
Usage...
But why? why not just keep track of that internally? lol
dude what????
Why do you need to scan the channel for a message sent from a bot?
Where you get a ok VPS for cheap?
like you can just store the stuff the bot sent from the beginning
so you dont need to check history
Are you asking where?
wait fr
Yes
Ofc 😊
Depending on what you want to do @slate swan you can either store the information in a database and come back later, or just do a wait_for command
hi
Can you lay out a step-by-step process of what this function is suppose to achieve?
Uh i guess
step 2 is done manually btw
I just want to know what the end goal of the function is suppose to be.
So you're running an on_message command.
You check if the message was sent by a bot.
Then what? You waiting for something to happen?
What do you want to do to that message?
so wait
Coz your methodology for doing all of this changes depending on what the process is
hold up, but when u use the wait_for command the function literally pauses
so how would it wait for itself?
if itself is waiting for something else?
I'm still confused as to what your end result is? what is your bot waiting on?
rasbarry pi is quite cheap and good too
what do you want the message to do or be done to?
bot aint waiting for anything
i already said what i wanted
So why do you want this message?
to grab the message the bot send
why does that even matter
its a reaction role command
like carl-bot's reacition roles
So you want to track reactions?
im grabbing the message id to use it for a on_reaction_add event
and when x reactions hit move on with life?
yes
for a specfic message
message*
carl bots reaction role is ez to do
mymsg = channel.send("smth")
```mymsg is your bot's message
oh
bruh yall did all this explanation
when yall coulda just told me to define it
im done..
this is all I wanted
sheesh
gnome made this wayy too complicated
I doubt that's everything
so im assuming i need to use the .message.id attribute ye?
or I dont need to specfic message?
specify*
no, you dont need
kk
mymsg is discord.Message instance currently
oh okay
I still think he's doing something wrong
look dude im good, that's literally all i wanted
that was literally the first thing i said
ctx.channel.history*
.......?
its fine, my problem was already solved
Maybe we're just misunderstanding each other. But I feel like you're doing it the long way.
how is defining what my bot said the long way?
when it was literally what i asked?
okay...
If you're using the on_message, then msg = ctx.send is wrong perhaps?
...
what???
?
I asked multiple times if it's on_message
and i answerd multiple times what my end goal was..
I had been assuming you were trying to do some sort of on_message crap which is why I thought you were doing it wrong
well the other ppl who just helped me did not see this from where im standing...
Oh well
next line is \n right??
Yes
Ok
Pretty sure it has to be part of a string as well @heavy radish
String?
Yes
mynewline = '\n'
mynewline = \n #doesn't work
ok
Does anyone know how I can host my bot 24/7
When you don't learn basics of python
Vps
What’s a vps
an IDE
Virtual private server

You need to buy
Where do I buy them?
Ok
guys, this is giving me an error
await ctx.add_reaction("👍")
Context has no attribute add_reaction
and when i try to use
await ctx.reply()
Context has no attribute reply
ctx.message.add_reaction
!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.
ah
and ctx.reply shoudve worked
Yeah that works
do you have the right dpy version
yes
it was working for my previous bot
any1 here knows how to fix this ?
async def updateLoop():
print(f"\n", end='')
print(f"\nStarting update loop...", end='')
await bot.wait_until_ready()
channel = bot.get_channel(STREAMER_CHANNEL)
while(True):
today = datetime.datetime.today()
weekday = today.weekday()
now = datetime.datetime.now()
value = MATRIX[TIMES.index(f"{now.hour}:00")+1][weekday+1]
if (value != "" and value != None):
await channel.purge()
sleep(1)
await channel.send(f"{value} is now live!\nhttps://www.twitch.tv/{value}")
MATRIX[TIMES.index(f"{now.hour}:00")+1][weekday+1] = ""
writeToFile()
await updateImage()
updatestreamerweb()
channel = bot.get_channel(878637135337492502)
await channel.send('@everyone Make sure to check out our awesome website and watch our featured streamers on it to earn points so you can unlock the request feature role on discord by buying it with the points you earn https://www.so-network.blackbullstudio.eu')
else:
print("randomfeature")
future = datetime.datetime(today.year, today.month, today.day, today.hour, 0)
await asyncio.sleep( (future-today).total_seconds() )
this will spam randomfeature
when value is empty
but instead of it spamming randomfeature i want it to execute it only once if the function is called
the context is probably invalid
both works in 1.7 or2.0
its a normal message
!d discord.ext.commands.Context.valid
property valid: bool```
Checks if the invocation context is valid to be invoked with.
what
?
replying to a message doesn’t need the content to be valid??
is mongo db enough for making a levelling bot?
ohhh,, ok, ctx.message worked @reef shell
u too are making the same 🥲
.reply should also work
what other possible issue then?
ctx.message.reply works
ctx.reply doesnt
What dpy version are you using?
lemme check again
Maybe a fork
do you have some module that might try to monkeypatch ctx.reply
1.7.3
import os
from discord.ext import commands
import discord
import json
import random
import asyncio
Show the error
wait
is it good?
i didnt use mongo
yeah, it offers 500mb free storage
That's the past error
i meant same comes with reply
is it good for my personal dc server?
YES
full code?
OK THANKS
just a minute
sorry for caps lock
how can i add warn counts with sqlite3
!d discord.ext.commands.Context.reply
await reply(content=None, **kwargs)```
This function is a [*coroutine*](https://docs.python.org/3/library/asyncio-task.html#coroutine).
A shortcut method to [`abc.Messageable.send()`](https://discordpy.readthedocs.io/en/master/api.html#discord.abc.Messageable.send "discord.abc.Messageable.send") to reply to the [`Message`](https://discordpy.readthedocs.io/en/master/api.html#discord.Message "discord.Message").
New in version 1.6.
with open("mainbank.json", "r") as f:
users = json.load(f)
earnings = random.randint(20, 100)
decide = random.randint(1,2)
if decide == 1:
await ctx.reply(f"{ctx.message.author.mention}, You got {earnings} coins :coin:!")
user = ctx.message.author
users[str(user.id)]["wallet"] += earnings
with open("mainbank.json", "w") as f:
json.dump(users, f)
elif decide == 2:
await ctx.reply(f"{ctx.message.author.mention}, Ye good for nothing, Go find a job or something")
@hasty iron
hmm
help
@commands.command()
@commands.guild_only()
@commands.has_guild_permissions(manage_messages=True)
@commands.bot_has_permissions(manage_messages=True)
async def warn(self, ctx, member:discord.Member, *, reason=None):
"""
Warns a user.
Works only if you and the bot has `Manage Messages` permissions.
"""
warndb = self.conn
cursor = warndb.cursor()
if member == ctx.author:
emb = discord.Embed(title=f'{self.bot.no} Error',description = "You can't warn yourself!", color=discord.Color.red())
await ctx.send(embed = emb)
return
else:
cursor.execute('INSERT OR IGNORE INTO warns_data (guild_id, admin_id, user_id, reason) VALUES (?,?,?,?)', (ctx.guild.id, ctx.author.id, member.id, reason))
warndb.commit()
em = discord.Embed(title=f"{self.bot.yes} Warned",color=discord.Color.blue())
em.add_field(name='Moderator:',value=ctx.message.author.mention,inline=False)
em.add_field(name='Member:',value=member.mention,inline=False)
em.add_field(name='Reason:',value=reason,inline=False)
await ctx.send(embed = em)
``` this is my warn code... i need it to be stored with srl no: or if sqlite3 has it, how do i make it so users can remove using the warn ID
Any good sites for hosting??
paid?
there may be some, but definitely not that good
ohk will they be 24/7
paid ones?
free ones
its obv that paid ones wd be 24/7
not sure about free onse
i do know about some
whats self-hosting
hosting on ur device
wud that be 24/7 wud i have to run my computer 24/7??
yes
both?
tell me
whats ur opinion on heroku?
