#discord-bots

1 messages · Page 414 of 1

velvet rover
#

(Also I did find discords auto mod.)

#

Say again sorry?

topaz stratus
#

"every couple weeks a random letter"
the worst case is when they start using the russian alphabet

velvet rover
#

they tend to simple find a replacement letter.

last cradle
#

how to do this, but command groups

fast osprey
#

Are all of the commands in the cog belonging to one group?

solar solstice
#

Hi can anyone help me in my discord vc? Link in bio

#

Building my server

fast osprey
#

Do you have a question about developing a bot?

topaz stratus
#

looks like they are just here to advertise

fast osprey
#

yeah sadly likely

last cradle
#

this bot was apparently created with discord.py but how did they get different types of nitro badges and the users bio?

burnt quiver
#

Thought bots coulnd't acess bios unless there's a oath2 for that

last cradle
#

hmmm

#

how

shrewd apex
# last cradle hmmm

they have a view profile link? do they have an associated website for that bot

#

if so they might be using oauth

shrewd apex
#

yeah then they might be creating a separate db, with reference to user details like that

#

when you grant the bot access

vestal canyon
#

Is it possible to code permissions to view slash commands? Like with roleIDs?

burnt quiver
#

yes, what library are you using?

vestal canyon
#

I've searched everywhere on yt, google, etc and I simply cannot see an example of someone coding view permission on slash commands 💔

burnt quiver
#

@app_commands.default_permissions, this only works for permissions sadly. No role ids

But still it prevents users without the permission to see the command

fast osprey
vestal canyon
burnt quiver
#

like ban_members, you can't set it on per role basis iirc

fast osprey
#

You can limit slash commands to roles natively in the UI. You don't need (and can't use) code to do this

burnt quiver
#

^
I doubt you would know what roles a server has

vestal canyon
#

Thank you!

fast osprey
#

Asterisk* on can't, you might be able to do something via the applications.commands.permissions.update oauth grant but it's incredibly simple for the user to just do this themselves and a lot more transparent

vale jungle
#

any help

timber dragon
#

command**[]**_prefix=*

vale jungle
vale jungle
patent hull
#

No lol

#

It means you should remove the “s”

#

The error says it too

timber dragon
#

I didn't know how to point it out without making it too obvious lol

patent hull
#

TypeError: BotBase. init (): missing 1 required positional argument: 'command_prefix'

vale jungle
vale jungle
#

how to make it reapeat and say something different like fuck you

timber dragon
#

just modify that message.channel.send message line?

#

or just use the builtin automod for stuff like that unless you're just trying to be funny

fast osprey
#

Really might want to reconsider posting that in a large public server

quick gust
#

Yeah because you aren't registering it as a command

quick gust
#

@bot.command()

#

!d discord.ext.commands.Bot.command

unkempt canyonBOT
#

@command(*args, **kwargs)```
A shortcut decorator that invokes [`command()`](https://discordpy.readthedocs.io/en/stable/ext/commands/api.html#discord.ext.commands.command) and adds it to the internal command list via [`add_command()`](https://discordpy.readthedocs.io/en/stable/ext/commands/api.html#discord.ext.commands.GroupMixin.add_command).
vale jungle
#

and how do i make it to show the channel

fast osprey
#

Where in your code is @command

vale jungle
vale jungle
fast osprey
#

Why would you make a command that lets anyone give themselves an admin role

vale jungle
fast osprey
#

...

vale jungle
fast osprey
#

are you often in the habit of naming your variables completely misleadingly

vale jungle
fast osprey
#

What is "it", and what do you mean by "show"

#

there is also no event named "ip"

vale jungle
quick gust
#

You can use the ID of the channel
<#channel_id>

vale jungle
fast osprey
#

!d discord.TextChannel.mention

unkempt canyonBOT
vale jungle
fast osprey
#

both work

vale jungle
#

ok

quick gust
#

What one? Your questions are very vague

vale jungle
#

so now how do i do this wth this <#channel_id>

quick gust
#

If you only have the ID then just what I said works, but if you have the channel object then just use it's .mention attribute

vale jungle
#

or what

#

this is so confusing

fast osprey
#

If you send the text [#12345](/guild/267624335836053506/channel/12345/), literally, to discord it will render a mention to channel with the id 12345

#

or you can use get_channel(id).mention

vale jungle
quick gust
#

What's even your purpose, how are you obtaining the channel ID?
Is it hardcoded in?

fast osprey
#

You're allowed to try things without asking if you should every time

vale jungle
quick gust
#

So just use that channel's ID

#

<#channel_id_goes_here>

vale jungle
quick gust
#

No, just the channel ID

what I wrote is just a placeholder to tell you where the channel ID goes

fast osprey
#

[#5678](/guild/267624335836053506/channel/5678/) will render a mention to channel with id 5678. [#42069](/guild/267624335836053506/channel/42069/) will render a mention to channel with id 42069.

vale jungle
#

it worked

#

srry for the hard time

quick gust
#

Funny thing is it'll still work if they add random underscores in the channel ID lol

woeful hill
#

just like python

stark ingot
#

API is written partially in python so that might be why 😅

radiant shuttle
#

can someone tell me how to achieve that in a ticket .py file?

to use send my text with my avatar and my name as APP, how it that possible>

fast osprey
#

When you send a message via webhook, you can set the avatar and display name at the time of sending the message

tender bobcat
stark ingot
#

Not exactly sure where I picked up that info. They reference python in a few blog posts iirc. And I think the API devs have also just said they use some python in various discord chats.

vale jungle
#

how do i fix this

quick gust
#

!d discord.ext.commands.has_permissions

unkempt canyonBOT
#

@discord.ext.commands.has_permissions(**perms)```
A [`check()`](https://discordpy.readthedocs.io/en/stable/ext/commands/api.html#discord.ext.commands.check) that is added that checks if the member has all of the permissions necessary.

Note that this check operates on the current channel permissions, not the guild wide permissions.

The permissions passed in must be exactly like the properties shown under [`discord.Permissions`](https://discordpy.readthedocs.io/en/stable/api.html#discord.Permissions)...
quick gust
#

you're looking for this

burnt quiver
#

!d discord.ext.commands.bot_has_permissions

unkempt canyonBOT
#

@discord.ext.commands.bot_has_permissions(**perms)```
Similar to [`has_permissions()`](https://discordpy.readthedocs.io/en/stable/ext/commands/api.html#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/stable/ext/commands/api.html#discord.ext.commands.BotMissingPermissions) that is inherited from [`CheckFailure`](https://discordpy.readthedocs.io/en/stable/ext/commands/api.html#discord.ext.commands.CheckFailure).
vale jungle
#

How do u make it only when u have certain roles u can use kick ban purge and timeout

burnt quiver
#

!d discord.ext.commands.has_any_role

unkempt canyonBOT
#

@discord.ext.commands.has_any_role(*items)```
A [`check()`](https://discordpy.readthedocs.io/en/stable/ext/commands/api.html#discord.ext.commands.check) that is added that checks if the member invoking the command has **any** of the roles specified. This means that if they have one out of the three roles specified, then this check will return `True`.

Similar to [`has_role()`](https://discordpy.readthedocs.io/en/stable/ext/commands/api.html#discord.ext.commands.has_role), the names or IDs passed in must be exact.

This check raises one of two special exceptions, [`MissingAnyRole`](https://discordpy.readthedocs.io/en/stable/ext/commands/api.html#discord.ext.commands.MissingAnyRole) if the user is missing all roles, or [`NoPrivateMessage`](https://discordpy.readthedocs.io/en/stable/ext/commands/api.html#discord.ext.commands.NoPrivateMessage) if it is used in a private message. Both inherit from [`CheckFailure`](https://discordpy.readthedocs.io/en/stable/ext/commands/api.html#discord.ext.commands.CheckFailure)...
fast osprey
#

Or just let people use the built in versions of things which already have permission checks and better security than anything you'll build (purge excluded)

glad cradle
last cradle
#

is there a work around to getting a users bio? and the nitro tier badges?

fast osprey
#

click on them

last cradle
#

in a bot app…

quick gust
#

I'm like 99% sure you cannot get a user's bio through a bot token

fast osprey
#

but why would a user need to use an app for that info when they can just click

grave sandal
last cradle
fast osprey
#

Yeah but why would they bother running that if they could just click, you're only adding extra steps thonk

Either way, bios and certain user flags are specifically withheld from bots

leaden cypress
#

Anyone know how to use sir-lancebot in my own server?

sick birch
vapid parcel
#

Is there an event for when an Audit Log is made?

#

Or created ^

#

Not talking abt events for each thing, talking abt for just Audit Logs.

#

So you can log anything in Audit logs.

timber dragon
#

Yes

rocky wadi
#

!d

unkempt canyonBOT
still breach
#

Hey y’all! 👋
Been working on a Python Discord bot the past few weeks — just finished adding an XP + rank system with image-based cards (like the ones MEE6 has).
Trying to keep everything lightweight and modular — might even open-source parts of it soon.

Curious: what features do you actually find useful in bots these days? I feel like most bots are bloated with stuff nobody uses 😅
Would love to hear what your server uses the most — or even features you wish existed but don’t see often.
Feel free to dm if you need anything.

fast osprey
#

Bots that just staple on random features without having a clear, precise niche just become mee6 bloatware

#

I'd much rather have 5 small bots that do specific things than 3 that are random Frankensteins of unimaginative copy paste commands

sick birch
#

yeah. i far prefer bots that do something very specific but do it very well

still breach
#

ok so you mean like if i were to implement for example some mini game in my bot i should do it good

#

im currently trying to become a freelance bot developer so im asking for other peoples advice beacuse chatgpt gave me a small foundation

fast osprey
#

More like you should have a stated, narrow purpose for your bot and do that

#

Rather than just picking random disparate things that people like

#

Like if I make a streamlined todo bot, shoving gacha anime wives into it just because people like gacha anime wives doesnt make any sense

still breach
#

yea i get what you are saying i shouldnt do 2 diffrent things

dusk pelican
#

too many bots, more discord bots than humans nowdays

vapid parcel
#

Whats up with a random invite being made every day around the same time. But NO user attached to it? Is this related to a discord thing or what is this..?

#

As you can see, everyone has an invite user, besides the top one?

#

It just has no user, and I am wondering if this is a thing I should worry about or just not care about it?

#

and reason why im talking about this in discord bots is because, I was wondering if a discord bot was doing it and some how not showing the user to. As I have logs to show when an invite is made n stuff and it never knows the user either.

tender bobcat
#

Maybe some widget thing?

#

Or the website, I forgot what it called

vapid parcel
#

We have DISBOARD, but it has its own invite already

#

i have no clue what else would causing it..

tender bobcat
#

I meant some discord native feature

vapid parcel
#

Yeah, but like what?

#

also, if discord made the feature, the author / owner of the invite should be Discord

fast osprey
vapid parcel
fast osprey
#

well if it's not a bot, it's not a question for discord-bots is it thonk

tender bobcat
#

Hmm, it does have a user ID

jaunty cape
timber dragon
#

does it really matter

vapid parcel
#

Yo, does on_member_join return what code / invite code was used?

#

If not, is there a way to get what invite code a user used?

fast osprey
#

there is not

vapid parcel
#

Well, discord should ADD that lowkey ong

#

trust, idk why discord doesnt have that ngl

#

how do other bots do it then?

fast osprey
#

they don't

#

they guess

vapid parcel
#

Huh 😭

fast osprey
#

check how many uses are left on all invites -> see someone join -> check again -> fail miserably due to race conditions and server lag

vapid parcel
#

oh..

#

So then uh, if the invite tracker was to see like ya know 100 people join within a second, which is possible ofc, uh they would completely die 💀

#

Alright, so thats a COOL thing to know. Not making the feature now!!

fast osprey
#

Mostly they would just give completely wrong results

#

especially if you care about who used which invite

vapid parcel
#

yeah alright then. Ty for letting me know, do you know why discord might not add this? Privacy reasons?

#

just curious on why discord actually doesn't allow us to grab this information ig

fast osprey
#

That presupposes that discord does things for reasons

#

which is sadly not often the case

vapid parcel
#

so real lmao

#

💀

#

alr, well ty for the answer, assuming all invite trackers are now 50% accurate or 0% accurate based on this information. Uh yeah, invite trackers are goofy then, should be a feature via discord or some bot MADE by discord but thatll never happen, we know this 💀

fast osprey
#

They might, who knows. It's available for human users now iirc

#

Don't know if it's a privacy thing, I'm honestly struggling to understand an ethical use case for why you'd want to treat people differently based on what invite they used

vapid parcel
# fast osprey Don't know if it's a privacy thing, I'm honestly struggling to understand an eth...

No no, actually the purpose for me was a logging bot. So you know who is using what invite blah blah. Not to treat them different, more of just so you know whos inviting who just incase..?

Scenario: Say person1 invites person2 right? And person1 starts to act weird / inappropriate in the server with person2, then you can narrow it down to those 2 being friends via logs ofc or invite links.

Thats just a scenario ofc, not saying its happening, just an idea behind why I wanted to do it ya know?

#

if that scenario even makes sense.. 💀

#

Yes ofc you can say "well if those 2 are being inappropriate no need to figure out the invite link blah blah"

Yeah ofc you don't need it, more for receipts or whatever ig.

#

Example video here. But since its not directly possible im going to move on and not make the invite tracker a thing ofc. But you get the scenario in a way but yeah.

fast osprey
#

you can get at this yourself via the members settings menu if it's for moderation purposes

fast osprey
#

ya

vapid parcel
#

If so, then I did not know that, my bad

#

Alright, so yeah, no need to actually make a feature then. Well thats nice to know

#

❤️

fast osprey
#

server settings -> members -> type in the name -> hover over the invite code

vapid parcel
#

Alr ty

tender bobcat
#

Oh it have been talked about

zinc lily
#

hmm

#

Is python or discordjs better for disc bots

#

I mean the last one I wrote was in discordjs and It was pretty easy

tender bobcat
#

If you ask in a python server, python

#

And the honest answer is the language you knew the best

sick birch
#

not much reason to have it in a bot anymore

#

oh someone already mentioned that. lol

tender bobcat
#

lol, 3 times 😂

fast osprey
vapid parcel
# zinc lily Is python or discordjs better for disc bots

Python if you know python, as you use cogs, and in discordjs you have to create a lot of custom things from what I was told. But again, depends on if you like python, or javascript, I would recommend python as I am in a python server. But again, thats all on what language you know.

proud saddle
#

its finnaly work

#

its just database for rp server in game fivem, its for like LSPD discord, you just type your name your badge number and you can search your name by your badge number

#

sqlite

shell canyon
#

Guys. Does anyone know why the Discord bot on the Discord.py library stopped running? The terminal says this: ...[INFO ] discord.client: logging in using static token

zinc lily
#

I mean I'm fine in both python and js but yeah I see your point there

#

thank you ❤️

zinc lily
#

thank you

fast osprey
#

Code and the full terminal output would be helpful

vapid parcel
fresh sky
#

Quick and stupid question: How is it that 'DiscordBot' has channels, but not roles?

-'DiscordBot' object has no attribute 'get_roles'
#

trying to make a function to post things to a specific channel and ping a specific role, but I am too incompetent to figure it out 🙁

#

The other attempt was just sending the role directly, but would I need to make it pingable first?

quick gust
#

!d discord.Guild.get_role

unkempt canyonBOT
#

get_role(role_id, /)```
Returns a role with the given ID.

Changed in version 2.0: `role_id` parameter is now positional-only.
timber dragon
#

roles are per server

quick gust
#

you can use this if you have the guild ID

timber dragon
#

or channel.guild.get_role

quick gust
#

yep basically you just need a Guild

timber dragon
#

bot.get_channel loops through each guild to get the channel so it can be slower than doing it directly on the correct Guild

fresh sky
#

ah, found the problem, apparently the bot needs mention everyone perms to ping a role

timber dragon
#

or the role needs to be mentionable yeah

#

just like users

fresh sky
#

Thanks ❤️

#

Is there any way to combine the ping and the embed into one message?

#
await channel.send("<@&1234>")
await channel.send(embed=embed)
#

does it twice, which is not ideal

timber dragon
#

await channel.send("content", embed=...) or await channel.send(embed=..., content="...")

fresh sky
#

ah, perfect, thanks ❤️

proud saddle
#

B.N is badge number, its for rp discord LSPD server

gritty inlet
#

Made a wrapper for ComponentsV2 lol (dpy is taking way too long to release theirs pepewhy)

#

Implemented it here for example (:

velvet rover
#

How do I set the footer icon on an embed to a users pfp?

gritty inlet
#

Any user? Interaction user?

velvet rover
#

uhhh

#

Would it help to show the entire function?

gritty inlet
#

Is it the user who ran the command?

velvet rover
#

it's an event

gritty inlet
#

Which

velvet rover
gritty inlet
# velvet rover

icon_url = message.author.avatar.url if message.author.avatar else None

#

Without the if statement, it can raise an error when there's no avatar and you don't want that

timber dragon
#

or usemessage.author.display_avatar.url, display_avatar cannot be None

velvet rover
#

Thanks so much you ywo

#

*two

stark ingot
gritty inlet
#

A short syntax way for your bot to display mobile status (😭)

#

Or you can just go to the right file and change it

timber dragon
#

man that belongs in.. sec

#

yes

gritty inlet
#

Oh okay sorry

timber dragon
#

it's a joke dw lol

fast osprey
#

Are you asking for help on something...?

velvet rover
proud saddle
velvet rover
#

thumbnail ok

proud saddle
#

yes

velvet rover
#

thanks

stark ingot
proud saddle
#
@bot.tree.command(name="pomoc", description="Jak použít Příkazy.")
async def pomoc(interaction: discord.Interaction):
    embed = discord.Embed(title="Help", color=discord.Color.dark_blue())
    embed.add_field(name="/settings", value="`Musíš vyplnit informace` </find:1402298966363738315>", inline=True)
    embed.add_field(name="/find", value="`Podle B.N najdeš informace` </settings:1402078090527641840>", inline=True)
    embed.add_field(name="/patrola", value="`Po konci patroli ji zapíšeš` </patrola:1402298966363738316>", inline=True)
    await interaction.response.send_message(embed=embed, ephemeral=True)```


why is my command doesent work? its not vissible in discor and not synced
proud saddle
gritty inlet
#

Commands take time to appear, and when you restart they will appear right after

proud saddle
#

this is printed ✅ Synchronizováno 3 slash commandů.

it mean 3 works but 4. not. this is 4

gritty inlet
#

Ah code problem then

#

Any errors?

proud saddle
#

no

gritty inlet
#

Sure you saved, git-pulled or whatever

proud saddle
#

what is git pulled

gritty inlet
#

Forget that

proud saddle
#

wait im dumb

#

i accidantly remove my 1. command [ sorry for my englisg ]✅

gritty inlet
#

All good (:

proud saddle
#

oh my god

proud saddle
gritty inlet
#

Oh so an identifier

#

Yeah that's cool

burnt quiver
#

very cul stuff

proud saddle
#

thanks

proud saddle
#

anyone now how to make this embed? i didnt mean the values but like this lines

finite salmon
#

In some keyboards it's shift + \

proud saddle
#

i know \n
but its field its description its what

#

its like description="\ndandysek\ndandysektest"

or what

sharp kettle
#

I need help

proud saddle
#

with?

sharp kettle
#

I have a custom command bot but every time I start it I get

proud saddle
#

i dont know its so hard i am new

sharp kettle
#

Ok

gritty inlet
#

I'll help

#

It seems as if this is the whole line. In Python, you cannot do from discord.commands and that's it. You may do from discord.commands import x

#

Yeah I don't think you need a while loop

#

Let me see...

#

So you don't really gotta change it

#

I mean at least for what I can see it looks solid

#

But maybe other people can help

sharp kettle
gritty inlet
#

Is the 6000 char limit counting for description + footer + author alltogether?

#

Hmm

#

Ah yeah

#

Well yeah you need to do that to know if you need to make another embed

fast osprey
#

why can't you test it yourself

vapid parcel
#

Yo, anyone know an alternative to discord.watch? They shutdown a year ago, and I have no clue if anyone has made a new one or anything?

#

Yes, this is related to discord bots 😭

fast osprey
#

what is that?

vapid parcel
#

Was a website to track all discord bots if the bot Discord Watch was in it, it would track the guild count for that bot, and allow you to "Promote" your bot in a way kinda.

#

Discord Watch was a very popular thing from what I knew.. but maybe I am wrong

fast osprey
#

like top.gg? But either way this doesn't sound like it has anything to do with making a bot, or making a bot in python specifically

vapid parcel
#

But basically they had charts that would show growth and much more, was just a little thing to get information based on a bot ofc

vapid parcel
red palm
#

the man is just asking a question

vapid parcel
#

its not that deep joe 😭

timber dragon
#

Typical joe

vapid parcel
#

so real

gritty inlet
#

House fire 😭

#

And no there was no up to date backup

gritty inlet
#

Well I assume they asked here since this channel regards Dbots in some way. Can't blame 'em, it's not like Ddevs is a very welcoming place

But yeah following topics is appropriate

velvet rover
#

How do I go about checking wether it was a bot or a user that deleted a message?

fast osprey
#

Unless a user deleted their own message, it'll show up as an audit log entry along with who did it

vapid parcel
#

and its wild that no one backs up anything, we run minio on its own server and thats all

velvet rover
gritty inlet
sharp kettle
#

@gritty inlet help

gritty inlet
#

(Looks like it)

sharp kettle
#

Py-cord

gritty inlet
#

Ah

#

Then it doesn't have app_commands

sharp kettle
#

what is that

#

Lol someone made me the bot not me

stark ingot
#

You should ask what library they use. The different libraries are not compatible

sharp kettle
#

Oh

#

Cybrancee supports various libraries for Discord bots including but not limited to:

  1. discord.js - A powerful Node.js module that enables you to interact with the Discord API easily.
  2. discord.py - A Python wrapper for the Discord API, allowing you to write bots using Python.

Users can create and manage their bots using these libraries depending on their preferred programming language.

If you need further assistance or specific guides on setting up your Discord bot, please let us know!

gritty inlet
#

It's not about that, you're mixing 2 libraries in your code

sharp kettle
stark ingot
#

There is no reason that they can only support discord.py. it is probably a stupid host that preinstalls the library for no reason

gritty inlet
#

Mhm. And if they do, you'll have to use it...

stark ingot
sharp kettle
#

Does anyone know cybrancee

stark ingot
#

No but your host should not matter for errors in your code

sharp kettle
#

Wdym

gritty inlet
#

Wait no

sharp kettle
#

Ok that’s what am using

#

Oh

gritty inlet
#

"Including but not limited to"

sharp kettle
#

ya

gritty inlet
#

So you can use Pycord, I assume. But make sure you don't mix in code from discord.py

sharp kettle
#

?

sharp kettle
#

Oh shi-

#

Ok thanks

stark ingot
#

You don't need to use both because they both cover pretty much the same features

sharp kettle
#

@stark ingot @gritty inlet can one of u make my bot py-cord only or discord.py only I will send the bot.py

gritty inlet
#

I'm not familiar with pycord syntax

burnt quiver
gritty inlet
#

Yeah you're right 😭

burnt quiver
snow oasis
#

hello, for a crowbot discord it's better discord.py or pycord ?

fast osprey
#

Entirely personal preference

fast osprey
#

Also what the heck is a crowbot

snow oasis
#

it's a bot that can do it all on your Discord server

fast osprey
#

Well it's your choice what library you use

radiant shuttle
#

i am trying to sync patreon with discord

i already made a test sub and still says 0 active patreons

here is my code

fast osprey
#

404

unkempt canyonBOT
radiant shuttle
fast osprey
#

Seems like this is a problem with the patreon api/client, not discord

radiant shuttle
#

yes but its like 15 hours+ from the time i created the API , i send them an email and i am still waiting for answer

#

so the code is fine right?

fast osprey
#

I wouldn't know, I don't use the patreon API

radiant shuttle
#

ok i wait for their answer then ,as the code have no problem

fast osprey
#

If you have a problem with the patreon API/client specifically, you should ask them or a community dedicated to it. This is not that

#

But it would help to do some narrowing, put in some debugging to identify the line specifically that isn't working like you expect

vapid parcel
#

Wanted crypto for discord.watch and I did NOT wanna do allat, was gonna buy discord.watch, but they had no source code no nothing, so I was not gonna do that.

gritty inlet
#

Until the code started failing due to things like outdated libs, etc. To the point where it wasn't functional anymore

vapid parcel
#

Yeah

#

Im talking abt a furry owner.. forgot his name, but he was the newer owner from what I remember..?

#

But he seemed to be hacked from what I remember.

#

🤷‍♂️

#

Not like it matters, discord.watch is now dead.

gritty inlet
white citrus
#

Why is the channel id invalid

stark ingot
#

Try restarting discord

white citrus
white citrus
fast osprey
#

have you tried debugging the relevant variable(s)?

white citrus
#

yeah

fast osprey
#

And?

white citrus
#

i tried to convert the list

fast osprey
#

You're looping over something called participants. Do you know what the value of that is?

white citrus
#

its a list

fast osprey
#

okay, then what is happening in that loop as you're looping over it?

gritty inlet
#

This is a basic example and of course you don't have to do it this way

molten bramble
fast osprey
#

looks like a timeout on reconnect

jovial ingot
#

The serverit is poopish

radiant shuttle
#

can anyone recommend a platform like patreon good for discord bot donation subscription system?

quick gust
#

You can use "Memberships" and their webhooks but there is no proper documentation for them

radiant shuttle
#

is stripe a good solution?

quick gust
#

Yeah stripe is good

ivory parrot
#

Hi everyone! Quick question... you've probably seen or used discord.builders to integrate buttons and dropdowns into your bot's embeds. Could someone help me out? I'm trying to figure out how to use it properly.

timber dragon
#

Those are not embeds.

#

But how you could it depends on the library you use, if any

radiant shuttle
quick gust
#

Not sure, I haven't used stripe before

stark ingot
gritty inlet
#

You're not supposed to use it "in production"

#

As of using ComponentsV2: some libraries already have the feature,
I for example use discord.py and it's taking them decades to add it so I just made my own Python wrapper for it

gritty inlet
#

(This is just a fraction of it all, but it's an example)

vapid parcel
#

w calculator honestly.

topaz stratus
#

cool

molten bramble
#

Someone told me this is normal for a bot if it’s only in 1 server

stark ingot
#

seems about right, resumed gateway connections are normal and expected. The 13.4 seconds behind may indicate blocking code or it might have just been a one off occurrence.

#

number of servers is not relevant to what is shown in that screenshot

molten bramble
stark ingot
#

resumes should happen quick enough that the bot does not appear offline for more then a few seconds, if at all

gritty inlet
gritty inlet
#

And it shouldn't be a blocking code, that gives a different warning

quick gust
# vapid parcel

I've always wondered what the use of that is
You're on a device, just open a calculator?
Unless it's to learn and build something to gain experience, there's no practical use imo

celest pelican
#

Shared calculating! :D

burnt quiver
#

there's probaly (hopefully) a check

woeful hill
#

more fun waiting for a round trip when input something

#

the computer's calculator app works so fast we gotta nerf it

vapid parcel
#

this is what my owner control panel looks like, its very complicated lmao. But its something thats good imo

gritty inlet
quick gust
#

Using a process manager

gritty inlet
#

So just killing the bot ig?

#

Eh I mean it's not a bad thing

quick gust
fast osprey
#

That's pretty much the accepted and common way for any managed process

vapid parcel
#

Pretty cool control panel imo. Synced via owner ids, so not anyone can just use it

compact root
#

whatsup

vapid parcel
#

And its synced to a certain guild, so only 1 guild can see it

compact root
#

damn python has a huge community

vapid parcel
gritty inlet
#

I just make the console direct to a txt file

#

Some Linux stuff

vapid parcel
#

Yes, but i rather be logging, as our bots are ran on linux ofc, but in development we are also using windows, mac, or other devices.

#

So you have to make it User Friendly for the team.

gritty inlet
vapid parcel
#

The control embed is the best thing I've ever made imo

gritty inlet
#

Honestly I find on_interaction useful (discord.py), ok yeah it's an internal but it does some things that i need

fast osprey
#

Like

gritty inlet
#

responding to expired buttons from a few commands that i still didnt migrate to use dynamic items

#

and for buttons in ComponentsV2 until dpy adds that

fast osprey
#

You do you I guess, weird thing to flex about

timber dragon
#

on_interaction is an event like all the others, nothing internal about it Shrug

gritty inlet
fast osprey
#

Get a load of this guy

timber dragon
#

@restive perch smh my head

restive perch
#

What

fast osprey
#

The idea is that the library gives you more elegant and maintainable ways of routing interactions. The exception being unimplemented interaction types, but your other example is just electing to not use what the library gives you

red solar
#

What kind of bot u guys r working on 💀

restive perch
#

This was a year ago

fast osprey
#

A bot that tells people what kind of bot to make

fast osprey
#

Bad inside joke. Currently looking into a prompt sharing tool for art communities

red solar
#

Btw making a large scale bot is worth it ducky_skull

ivory parrot
stark ingot
young dagger
vapid parcel
#

This shows my worker + my command.

#

This is all done using PostgresSQL, a lot of the stuff you are seeing in there is custom functions or custom connections, so you can't copy that exact logic, but you get the whole idea!

astral sand
#

Is it possible to ask my bot to delete messages from the user in a DM?

fast osprey
#

No

rugged steeple
burnt quiver
#

can't you do something like that instead of fetching all the bans

#

and then loop through all of them

fast osprey
#

Or just time people out instead of banning them if you want it temporary, weird move

burnt quiver
#

real

vapid parcel
#

Its just a discord bot 😭

vapid parcel
vapid parcel
vapid parcel
fast osprey
#

Just because people do things doesnt mean it's remotely smart to do

#

(Or that it wasn't made obsolete by native features that were introduced after those bots were made)

stark ingot
#

But temp ban is not the only thing that could leverage this code

gritty inlet
quick gust
#

You should really invest in making it as an Activity instead

#

working with images for this stuff is not fun

#

(assuming that's an image, I have no idea how componentsv2 work)

gritty inlet
#

And yea that's an image

#

I don't plan on making activities as I'm not a web dev and that's what it takes

quick gust
#

Valid

gritty inlet
young dagger
#

Thanks for sharing btw

gritty inlet
young dagger
#

In the worst case, nothing will reflect the change

#

So I guess it's better than nothing

vapid parcel
#

I think i do, forgot ngl

#

I personally think the code is fine how it is, sure there are improvements, but at the end of the day, it works fine as is. No pyright errors, no typehint errors either.

young dagger
#

Also why not use a Discord timestamp instead of {readable_time}?

vapid parcel
#

Because sometimes the timestamps are annoying, I only use them when I think it looks good imo

#

Timestamp would look bad in this imo

vapid parcel
gritty inlet
# vapid parcel

Honestly you could let the invite link embed, because it shows "invalid" or whatever when you're banned from the server

vapid parcel
#

If you try to join before the unban, completely on u

#

🤷‍♂️

young dagger
gritty inlet
young dagger
#

Is there some logic behind it?

gritty inlet
#

Ngl I'd add a relative timestamp for in how long you get unbanned idk

gritty inlet
#

At least I guess that's how it is

gritty inlet
#

Well yeah but it doesn't have to be instead of the text that tells you for how long

#

Imo the best would be both

young dagger
#

Why though

gritty inlet
#

As a user I'd like to know immediately for how long it is, but also have a relative timestamp

#

Because if you put only one of those, and this goes for both - you'll need to "calculate" the other one (if you wanna know it), I think putting both makes it easier for people

young dagger
gritty inlet
#

Hopefully that doesn't sound too confusing

gritty inlet
#

Hmm u have a point but still I'd have both, I don't have a good argument as of why xD
But yeah if I had to choose just one, it'd be relative

fast osprey
#

Nice tos violation prettythumbsup

gritty inlet
#

Is it good to use Optional for nullables? 🤔

timber dragon
#

I don't see why not

gritty inlet
sick birch
#

nowadays it's recommended to use T | None syntax but Optional is fine as long as you stay consistent

timber dragon
#

Unless you really want to tell the user that the field wasn't there Shrug

gritty inlet
#

T as in a placeholder or

timber dragon
#

The type yes

sick birch
#

T would be the type if the variable had something other than none

gritty inlet
#

Well I knew Optional was like a shortcut to that

sick birch
#

it is, but if you use it in a function declaration it could be confused for a variable being "optional" (in that it has a default)

gritty inlet
#

Nah in func declarations I dont use Optional

#

Kinda pointless since var: type = None tells you that

#

If provided - should be that type otherwise None..

fast osprey
#

typehints aren't just for humans reading it, it's for typecheckers which isn't pointless to tell them what the variable could be

gritty inlet
#

Alright

#

Well in the context of Optional what I said isn't really wrong

#

Since Optional doesn't do much, in terms of var attributes idk

#

Unless there's more stuff where it is necessary

fast osprey
#

typehints don't do much at all on their own

#

so why bother typehinting at all

grave sandal
timber dragon
gritty inlet
vapid parcel
#

Recommend using basedpyright and ruff check to make sure your code is good 👍

timber dragon
vapid parcel
#

Also, personal opinion, recommend 3.10 or higher with dpy. But each their own ofc!

burnt quiver
timber dragon
#

Or 3.12 while you at it since that's kinda the standard

and enjoy the new typing features :)

vapid parcel
gritty inlet
timber dragon
#

Dpy has to because it's 3.8+ and does runtime checking

gritty inlet
#

Optional and Union are all over the place there lmao

vapid parcel
#

Also, very much recommended uv for discord bots as its a lot safer!

#

Not just discord bots, but any py project

gritty inlet
#

Wait so what exactly does from __future__ import annotations do

timber dragon
#

It's complicated lol

vapid parcel
gritty inlet
#

But tbh blame Discord, both clan and primary_guild are present in the user response 💀

timber dragon
grave sandal
vapid parcel
grave sandal
#

I'm not sure though, was it originally there on 3.8 before 3.10 came around, or was it there after? because if it was there before is it really backwards compatibility?

timber dragon
#

It's not really for that afaik?

vapid parcel
timber dragon
#

It was added in 3.7 iirc

gritty inlet
#

I just use 3.10

#

might upgrade to 13 when it comes out idk

vapid parcel
grave sandal
#

You're good then and can use the syntax without anything extra

gritty inlet
#

3.10.6 to be exact

timber dragon
vapid parcel
vapid parcel
gritty inlet
#

Idk if Im even doing this right

vapid parcel
#

I cant wait for dpy to release 2.6.0

burnt quiver
#

soooon

grave sandal
#

What comes in 2.6.0?

vapid parcel
#

Trust lol

burnt quiver
#

cv2

vapid parcel
#

V2 components

gritty inlet
#

About damn time

vapid parcel
#

Which ate fire

burnt quiver
#

modals v2 sooon

gritty inlet
#

Eh I mean it's just a select menu

#

They shouldve added upload button

burnt quiver
#

advaith said they are planning to add more

#

like role selects

vapid parcel
#

Yes, its a fire thing tho 🙏

gritty inlet
#

Modals are currently bland

#

Ngl I'll miss my code

#

But there's goodbyes to everything

vapid parcel
#

No return types 😢

gritty inlet
#

For some reason that's the only file in the REST client that i didnt do that in yet

#

Ill do that

vapid parcel
#

😭🙏

gritty inlet
#

Awesome

#

Nah but fr tho why is that happening 😭

#

Maybe because Container class def is under ComponentsV2 class?

burnt quiver
#

probably

gritty inlet
#

Weird that its an issue only for the return type

burnt quiver
#

iirc from __future__ import annotations should fix that and you shouldn't have to change

gritty inlet
#

ill just move it up (:

vapid parcel
#

😅

grave sandal
last cradle
#

what are some sure ways to tell if a user has nitro

#

well all

fast osprey
#

none. Discord doesn't tell you and you don't need to know

dusk pelican
#

hello pythonistas, whats new on discord api?

#

why you need to know if someone has nitro? I mean for discord sure, but for a bot

gritty inlet
gritty inlet
vapid parcel
#

Hey, so this is not related to discord bots, but have no clue where to ask.

So I use UV in my discord bots, and when doing uv export > requirements.txt --no-dev it puts the file format to UTF-16LE and I am wondering if it should be that format, or if it should be UTF-8?

fast osprey
#

Sooo don't ask it in the discord bot channel? what

vapid parcel
#

It relates to my discord bots, but not exactly related to discord bots 💀

fast osprey
#

Any reason why you'd use that over something more ubiquitous like pip?

vapid parcel
#

I just prefer pip, and it does hash checks.

#

Security reasons.

fast osprey
#

is the implication that pip isn't secure?

vapid parcel
#

I just see uv as more secure cuz of hash checks and all of that!

vapid parcel
fast osprey
red solar
#

Ah- so I need some advice. Is it really worth investing the time and effort into developing a complex, collectible-trading Discord bot that features economy systems, marketplace mechanics, and interactive multiplayer elements, similar in functionality to existing large-scale bots?

fast osprey
#

Would people choose to use your bot over an existing one

red solar
fast osprey
#

It really depends on you and what makes you happy. If your happiness hinges on people using what you build, you need to build something useful and unique

#

If your happiness is just from building something that nobody uses, then great make whatever you'd like

red solar
fast osprey
#

Having successful self directed projects isn't nothing

#

But it's easily less valuable than something more relevant to the position you're applying for

#

But if your goal is to make something popular, that almost never starts out from looking at existing solutions and thinking how you would tweak them slightly and repackage them. It comes from finding what people want but don't have

red solar
stark ingot
#

My guess is there are extremely few jobs that knowledge of a specific discord bot library gives you bonus points.

fast osprey
fast osprey
#

I've found one or two niche things that a few people find useful. I have no desire to try to trend chase and make a thousand+ guild bot

vast gale
fast osprey
#

I mean you're welcome to make whatever assumptions you want about my experience

floral pelican
#

Anyone who knew about incapsula

twin pike
#

This is what you get when you know how to code and you're bored lol

merry cliff
merry cliff
#

🎰

twin pike
#

lol

#

great idea

merry cliff
#

ty

shrewd apex
#

this was mine from quite a few years back lol

#

been quite a while 😔

timber dragon
#

Damn

twin pike
#

I beg of you 😭

unkempt canyonBOT
untold goblet
#

difflib?

#

i tried doing this once using difflib

#

it's to do with sequencematcher

#

sorry i have to catch a bus ride

twin pike
#

thats actually cool

#

I could help if you put your code on pastebin

twin pike
#

alr

#

im on mobile so itll be a min lol

#

quick question

#

why do you have your variables in all caps

#

you dont gotta scream it lol

#

it looks like AI when its like that

#

other than that I have absolutely no idea

#

I've never seen anything like that

#

cool beans though

#

your variables for COLOR_EQUAL

#

I just write those in normal letters

#

not caps

#

then again nothing i make ever works so

#

dont listen to me

#

xD

woeful hill
dusk pelican
#

hello

#

what bots you working on?

dusk pelican
#

no thanks. What is the purpose of ServerLogger? To log the servers the bot is in?

fast osprey
#

So the audit log but also invading user privacy

dusk pelican
#

mhh, is that necessary to log? A lot of data

#

@slate swan what functions does your bot have?

fast osprey
#

I will and I have

dusk pelican
#

are you polish?

#

ah ok, you know mata, I think i have heard a song from him

#

but anyways, why you log so much data?

#

@slate swan

#

Do you have a ban kick command in your bot?

#

what is a softban? a temp ban?

#

ok

#

is your bot online and hosted somewhere?

#

ok

pseudo panther
#

is there any way to learn good discord python coding?

#

any book or like any online book?

fast osprey
#

The official python tutorial is quite comprehensive

shell pelican
fast osprey
#

Code abbey is another solid practice site for bite sized problems

vital yoke
#

how do i check if my bot has the send messages permission without any intents?

fast osprey
#

You don't need any intents to check permissions

#

Well that requires the guilds intent but pretty much any cache requires that at minimum

fast osprey
#

No

#

Guilds is not the same as guild members. Two separate intents

#

The guilds intent isn't privileged so you can ask for it without approval

vital yoke
#

Okay thank you, I’ll try that

twin pike
#

I don't understand your code one bit really lol

#

I've never seen anything like it

shrewd apex
#

tbh could just use diff code blocks, generating images per message edit is pretty expensive on the cpu

#

!d itertools.zip_longest also use this

unkempt canyonBOT
#

itertools.zip_longest(*iterables, fillvalue=None)```
Make an iterator that aggregates elements from each of the *iterables*.

If the iterables are of uneven length, missing values are filled-in with *fillvalue*. If not specified, *fillvalue* defaults to `None`.

Iteration continues until the longest iterable is exhausted...
shrewd apex
#

also i am not really clear what's happening in your case or what's the issue you say "strange things happen" so maybe shed some more light on that

tender bobcat
#

So you can still get a specific member in the guild if needed

#

If they are in the guild

unkempt canyonBOT
#

Please react with ✅ to upload your file(s) to our paste bin, which is more accessible for some users.

twin pike
#

yeah sorry

fast osprey
#

not in any library I'm aware of

#

I mean technically no library can ever stop you from going into internals or even modifying its source. But in dpy at least there's no supported way to influence the cache beyond setting a size limit

fast osprey
#

Again, you adding messages to the cache isn't supported

sick birch
#

does a message cache even exist

fast osprey
#

Dpy at least (and presumably forks) cache a limited set of messages received while the bot is online

#

ofc someone could easily make their own cache too and do whatever operations they want with it

sick birch
fast osprey
#

It's mostly for providing the old message on relevant events (delete/edit)

tender bobcat
#

Oh well, I thought it existed but seemingly it didn't

gritty inlet
#

You can just manually cache completely outside of the lib's code, I don't think there's a good reason to modify the code

gritty inlet
gritty inlet
#

(Never got deep into the gw events so Idk)

fast osprey
#

No, the payload doesn't give you old states

dusk pelican
#

guys, is there an option in discord server settings to change the roles based on message activity, for example if a user has a total of 100 messages the role changes to like bronze and so on?

timber dragon
#

Nope

#

That's something only a bot can do

dusk pelican
timber dragon
#

Can be hardcoded but sure if it's multi guild / often changing

fast osprey
dusk pelican
#

mhh ok.

whole shoal
#

pithink a simple bot would be convenient

dusk pelican
#

user sends a message -> messages += 1 like this I assume

fast osprey
#

With a db, this is probably on the order of like 200 lines of code. But at what point is the number of messages a person sends relevant at all, incentivizes the complete wrong thing

whole shoal
#

You can use a sliding window log approach to count number of messages in a certain time window if you want to

dusk pelican
#

mhh ok interesting

#

sry I am new to discord API and Gateway

dusk pelican
fast osprey
#

Yes; your bot opens a websocket with the gateway and it pushes subscribed events (intents) down to you

dusk pelican
#

XY has joined the server. Welcome and have a nice stay!

#

yeah?

#

For what is the API endpoint modify current User and when do I need this, examples?

fast osprey
#

The gateway is how discord pushes events to you. When you want to send instructions to discord that goes through the api

dusk pelican
#

like changing the bots avatar

#

it is really well documented, I enjoy reading the docs

fast osprey
#

No I haven't had any need for it personally

#

I'll change presence to announce downtime/maintenance but that's about it (presence does go through the gateway iirc)

dusk pelican
#

can you pleas send a link to the specific page on the discord api

fast osprey
#

Practically speaking, you don't need to know the api

#

Language specific libraries (like discord.py and its forks) wrap the api calls

dusk pelican
fast osprey
#

It's fine to read if your curious but for a developer it's one layer deeper than you really need to know for implementation purposes

dusk pelican
fast osprey
#

I'm sure you're capable of interacting with things without fully understanding them, or you'd be fully unable to leave your house or pick up the device you're typing on

#

The discord api is very thoroughly documented though, and you can look at the source of a library to see how it implements it too

wooden basalt
#

hey
I was wondering if it would be possible to make it so that the discord discover server features could be disabled
via a system

gritty inlet
wooden basalt
#

how can i do it via a server setting?

fast osprey
#

What server features are you referring to?

#

And what does this "system" do?

wooden basalt
#

basically

#

I just want smthing

#

that disables the explore/discover servers feature on discord

fast osprey
#

Humans can do that. What is triggering this system to do it instead?

young dagger
#

Not based on number of messages

dusk pelican
#

@young dagger you are probably using discord py he?

young dagger
#

Mhm

dusk pelican
#

reading the docs and it is understandable

young dagger
#

I never used it

dusk pelican
young dagger
#

Just the same one I’ve always used

gritty inlet
#

I wouldn't use a fork unless someone told me a really good reason to do it

fast osprey
#

They're all functionally equivalent, the only difference really are some minor design decisions and the support you get

gritty inlet
#

But Idk what Nextcord changes except for syntax

#

I assume more

dusk pelican
dusk pelican
#

Whatever suits the best for you 😊

scarlet tiger
dusk pelican
#

Nice

timber dragon
#

There are many more Python wrappers fwiw

true stump
#

Hello 👋👋

#

Please I want to learn about discord python but

#

Is there a crash course

#

Hello can you help?

#

I mean no course for it?

#

I was directed here by a friend

woeful hill
#

No such thing as discord python

#

You learn python, you read the documentation of the api, or its wrapper and you write a code for that

timber dragon
#

Can't you just use the on_app_command_completion event instead of doing it every command manually?

#

Or on_interaction if you need it to be called immediately after invoke

dusk pelican
#

hey guys, so I am reading about application commands, and there is one with a prefix like !ping and one with a so called slash command, what for application commands you using and is better?

woeful hill
#

Prefix commands are not real commands

Application commands are slash commands and context menu

dusk pelican
#

I think slash commands more up to date or you say prefix commands also good?

#

!ping or /ping

unkempt canyonBOT
#

You are not allowed to use that command here. Please use the #bot-commands channel instead.

woeful hill
#

Slash commands have more advantages that prefix ones

woeful hill
#

Like autocorrect, self documented, enforcing value types

dusk pelican
woeful hill
#

Yes it is self documented, you don't need like a help menu to list out all the commands and their usage, discord already display them for you

dusk pelican
#

with the discord api the slash command is just registered and linked to discord

#

but the actual trigger is through the gateway?

woeful hill
#

They send a interactionCreate event i think, i dont use raw api call

#

When the library already route the event to the right callback for you

dusk pelican
#

nice got it

woeful hill
#

Just see the example of the library, mess around, change stuffs to see how it work

woeful hill
#

Note that syncing have rather heavy rate limit, the example shows you a convenient way to sync on startup for example sake, you should only sync when needed

dusk pelican
woeful hill
#

If you use pycord, they have a smart way to auto sync for you

#

If you use others, sync when you need discord to know

dusk pelican
#

got it

finite salmon
#

pycord, by default automatically syncs for you. If you want to handle the syncing yourself, you can do that too

woeful hill
#

indeed very smort

wise mica
dusk pelican
#

mhh ok

fast osprey
#

Which comes with a host of other complications like the permissioning being opaque

dusk pelican
#

it might be also efficient, prefix commands cause that the bot must read all messages but with slash commands the bot reads just interactions

#

and message content is a priviliged intent so

#

if anyone can understand my thoughts

#

and as mentioned slash commands comes with autocomplete desccription ......

#

correct me if I am wrong, I am open to feedback

wise mica
#

Yea there's no right or wrong selection. I would generally say that bots that need frequent usage like economy bots are better off using prefix commands and bots that don't require frequent command usage may be better off with slash

#

Both is nice for me because it offers the user the choice

dusk pelican
#

right, but what is the point solsticeshard mentioned, if anyone can explain? You are right, the user can choose between prefix or slash

young dagger
#

Useful command?

dusk pelican
#

as long as you have fun

burnt quiver
#

^ real

wise mica
young dagger
#

The idea is to find a way to validate messages as moderation evidence, when messages are fabricated

#

Example if you copied a message from 13:12 and edited the HTML to show 13:25 and then provided that message ID, we could see that something is not right

quick gust
young dagger
#

Well, if you are not into moderation it's not really an issue for you

young dagger
quick gust
#

Ah, valid

wise mica
#

What would the second ID be? If you fabricate a message what would you link to?

young dagger
#

Second ID could be used as any reference (even the message where the command was revoked from)

#

message ID 2 is optional

quick gust
#

Why do you even need to compare then
To see if the timing of any message is fabricated or not, you can just see when that message was created_at?

fast osprey
wise mica
#

The purpose of giving the user a choice, no?

fast osprey
#

People can just learn to use the correct system

young dagger
dusk pelican
#

cool, but NSFW is not good

#

you using an api for that

quick gust
wise mica
young dagger
dusk pelican
#

no thanks

quick gust
#

Yes so you just need one message ID and check when it was created_at
You don't need to know the time difference between anything

young dagger
#

(could maybe be used for other cases I don’t know yet)

wise mica
#

Because with a second ID you're having to do maths and inevitably someone is going to fuck up their maths

quick gust
young dagger
#

Thanks for the feedback

wise mica
#

Probably also worth noting that most edits are not done through HTML but just image editing

tender bobcat
#

Not sure if you have done this, but you should detect the channel(whether it's nsfw channel or not), and restrict the nsfw option in non-nsfw channel

wise mica
#

Where it's fairly common for people just to fuck up the message alignment

tender bobcat
#

Nice

woeful hill
#

a features that spit out feature ideas

tender bobcat
#

a command to delete the source code and maybe on GitHub, then initiate disk wipe and shutdown itself

quick gust
#

"interesting" is subjective

tender bobcat
#

also delete the db

young dagger
#

@quick gust @wise mica What time format would you use to show when the message was created?

quick gust
#

long date time

wise mica
#

One of those discord time stamps so people dont get confused converting to their timezone

fast osprey
# young dagger Useful command?

asking people besides trained server admins to get message ids is pretty cumbersome. If this was something you found useful, I'd suggest presenting this as a message context menu you run twice instead

quick gust
#

or... Just ask for the message link and strip the ID yourself

tender bobcat
#

Like about 5 mins, about 2 and a half day etc.

fast osprey
#

I mean I have a hard time seeing why anyone would care how far apart messages are beyond the day or minute even

tender bobcat
#

I would sometimes

fast osprey
finite salmon
#

you should pass nsfw=True in your command decorator (or group) instead of manually checking if it's an nsfw channel or not

#

that way the command wont even show up in non-nsfw channels

#

im pretty sure its not legal to make nsfw commands which dont mark themselves as nsfw

finite salmon
#

you should probably separate the nsfw and sfw into separate commands and mark the nsfw one to discord respectively

tender bobcat
quick gust
#

lol they probably meant it's not allowed in the developer policy

last cradle
#

wassssssup

#

how to do hyperlinks in titles i forgot

stark ingot
#

I assume you mean embed titles. You have to set the URL parameter of the embed