#dev-contrib

1 messages · Page 98 of 1

fervent sage
#

quackstack#32

#

hm

#

quackstack#31

#

guess ill find it myself

fallen patrol
#

quackstack#3

#

oh

#

right

#

its because it doesn't get all of them at once

short snow
#

Approve akarys pr, and you can get it here

green oriole
#

lol

fallen patrol
#

functionality should return either when akarys pr is merged or in about 30 minutes for quackstack

green oriole
#

Yeah, it will be fixed by sir-lancebot#642

fallen patrol
#

basically when it refreshes the repo list, 6 repos get left out

sleek steppe
#

oh right I forgot it didn't get merged to main

green oriole
fervent sage
#

one day

green oriole
#

That's another blocker

fervent sage
#

one day i'll type docker-compose not compsoe

gritty wind
#

or alias it and dw about it 👀

short snow
#

Bash aliases

fallen patrol
#

zsh

fervent sage
#

i would make an alias

sleek steppe
fervent sage
#

but then i have no incentive to fix my typing

fallen patrol
fervent sage
#

idk if that was intentional but 10/10

green oriole
#

I can do it otherwise

vocal prairie
fervent sage
#

@short snow ive checked out the code on your colors branch and the server error when saving the duck seems to have been reintroduced

fallen patrol
#

uh is this a bug with .savatar

vale ibex
#

since the bats are black, it's probably being hidden

gritty wind
#

haha that's hilarious

sleek steppe
fallen patrol
#

lets add image color detection to see if the top is dark or bright 😄

vocal prairie
#

That's overkill.

#

Just make the bats bigger.

#

Simple.

fallen patrol
#

if i was serious I wouldn't have put the 😄

vale ibex
#

If anyone wants to put a white outline on this feel free

fervent sage
vale ibex
#

I'll add it to my PR for pfp modifiers

fervent sage
fallen patrol
green oriole
sleek steppe
#

@green oriole conflicts resolved

green oriole
#

Sweet, thanks!

sleek steppe
#

Wait I forgot to remove a comment

green oriole
#

lol yes

thorny obsidian
#

Okaaaay, I think I have int e for Lancebot working, but I'm not well versed enough to test the features. @hardy gorge if you're around, do you wanna hop into my test server and see if I'm made the proper changes?

sleek steppe
#

@green oriole I changed the comment btw

thorny obsidian
#

This invitation extends to others who are comfortable with our int e command and would like to test it but also don't want to break my test bot

hardy gorge
#

I'm not around at the moment. I can test it tomorrow, though. In about 13 hours or so.

thorny obsidian
#

okie doke~ no rush

#

I can use this as int e practice anyway

vocal prairie
#

What is int e?

gritty wind
#

internal eval

#

like eval but

#

runs the code directly in the bot, instead of snekbox

vocal prairie
#

Oh I see.

#

Actual eval()?

gritty wind
#

!src internal

stable mountainBOT
#
Command: internal

Internal commands. Top secret!

Source Code
vocal prairie
#

Ty!

gritty wind
#

line 218 there

vocal prairie
#

I see it now. Ty

vale ibex
#

Ak's PR has now had 2 PRs into it 😂

thorny obsidian
#

Let's us do things like this:

vocal prairie
#

That's cool!

sleek steppe
#

what's that second role 👀

thorny obsidian
#

!remind 3H check out the poetry set-up and test it against pipenvs

stable mountainBOT
#
I'll allow it.

Your reminder will arrive in 3 hours!

gritty wind
thorny obsidian
#

haha, one for something else I'm involved with that has a name I don't want shared publically

#

An old integration I forgot to remove really

clever wraith
vocal prairie
#

Since someone could run a command that directly takes down the bot or smth

#

Since int e isn't through snekbox

clever wraith
#

Someone could just like ```py
os.system("RM -rf bot")

#

?

gritty wind
#

It's locked to admins

clever wraith
thorny obsidian
#

Internal eval accesses the bots internals directly, so you could theoretically nuke a server with it depending on the bots perms

gritty wind
#

So yes, an admin can technically mess with things

#

though the hosting server itself doesn't matter that much, the pod will just die and redeploy

#

bigger issue is messing with the discord server, or the environment secrets

clever wraith
#

Which would be bad, and illegal I think

gritty wind
#

Illegal in what way?

clever wraith
#

I'm not sure, I assumed it might be considered cybercrime

fallen patrol
stable mountainBOT
#
Command: internal eval

Run eval in a REPL-like format.

Source Code
fallen patrol
#

it gets sub commands lel

sleek steppe
#

yea

stable mountainBOT
#

@thorny obsidian

It has arrived!

Here's your reminder: check out the poetry set-up and test it against pipenvs.
[Jump back to when you created the reminder](#dev-contrib message)

fallen patrol
#

Sigh

#

!remind 4d if the docs command still looks bad because discord changed markdown on mobile talk about making an issue.

stable mountainBOT
#
Can do!

Your reminder will arrive in 4 days!

gritty wind
#

is this before or after the rework?

fallen patrol
#

Live

#

Whatever is live right now

gritty wind
#

so before

#

the rework is in a PR atm

#

it's still

#

in development

#

it fixes some issues

fallen patrol
#

Note: they changed markdown in like the last few updates of discord

sleek steppe
#

How did they change it?

fallen patrol
#

Send a screen shot of the docs embed

sleek steppe
fallen patrol
gritty wind
#

ah, android

fallen patrol
#

Used to have a blue title with visible ``

#

Now it has a `` title with no link

#

It's still clickable

fallen patrol
#

Android is better

gritty wind
#

android is a clusterfuck

fallen patrol
#

@mods targeted harassment towards Android users

#

Pls ban

#

(/s obviously)

gritty wind
#

!mute @gritty wind 12H good night

fallen patrol
#

Huh the bot didn't even error

#

Wait

gritty wind
#

!unmute @gritty wind

#

I'm muted here, bye

fallen patrol
#

Did @stable mountain even say anything

stable mountainBOT
#

IDK, muted Scaleios I guess, I'm tried

fervent sage
#

tried lol

fallen patrol
#

Smh

#

Oh I just realized it's impossible for some commands to become slash commands

#

At least with current api

vocal prairie
#

Why?

fallen patrol
#

Literally impossible

#

It's impossible to have a new line in an argument

vocal prairie
#

Do you need one?

fallen patrol
#

Snekbox

vocal prairie
#

Oh, yeah, not for that.

fallen patrol
#

I even tried at one point lol

#

I meam

#

It could be esoteric only

patent pivot
#

limitation of the editor they use for slash commands UI, but might work with UI components so

#

we'll see

#

but this seems like a problem we can work around

#

but again, we'll wait for them to reach a more GA state

thorny obsidian
#

Alright, I think I'm ready to PR this

short snow
fervent sage
#

yea it would have worked when merged anyway i'm just a bit of a moron with git sometimes kek

#

it should still work /shrug so no harm i guess

short snow
#

lol ok, I will leave it

#

the 10th time am getting this, konifer's commit and when someone merges the main into their fork's main

short snow
#

after lot of different stuff, this is the best i could get

magic arch
#

Maybe round the time at the bottom to a few digits?

short snow
#

dunno, i like to be precise

magic arch
#

Up to you I suppose shrug

fallen patrol
short snow
#

he was

#

i was just messing up while reviewing his PR

fallen patrol
#

Oh

#

Is there an issue for variable automatic slowmode?

patent pivot
#

We've touched on the idea internally, no issue specified though

placid ermine
#

i'm not so sure about the embed

placid ermine
#

would love a second opinion on this too

tawdry vapor
#

I don't think a time is useful to most users. It's just gonna be a distraction for readers.

#

The embed therefore loses purpose and just ends up unnecessarily bulking up the message

fervent sage
#

eh i like it - it's not that big, gives some insight into how long it took, and is an interesting technical detail, which is nice in a technical community imo

tawdry vapor
#

I wouldn't care if the stat was hidden but Discord doesn't provide us with a way to do that

#

I firmly believe that displaying the execution time is just bloat.

fervent sage
#

i mean by extension so is the whole latex rendering command. is it actually needed for the server? nah, but it's interesting and a cool feature, the time is the same - it's an interesting technical detail

tawdry vapor
#

That's such a stretch I'm not sure why you're even trying to make that argument.

fervent sage
#

its not?

tawdry vapor
#

The usefulness of rendering latex is far larger compared to the usefulness of seeing the rendering time

fervent sage
#

sir-lancebot is a bot that provides extra utilities that are not technically needed to operate the server, and by all means they're cool and make the community better, so why is another technical detail in a technical community bad?

tawdry vapor
#

Because this is an actually useful feature and not just a game or something for fun. So we should be mindful of readability rather than coming in with the mindset of throwing cool trinkets onto it.

fervent sage
#

but having a small string saying how long it took doesn't decrease readability

tawdry vapor
#

Maybe readability isn't the perfect term, but I disagree. like I said, it's just a distraction from the actual intent of the message being communicated by the person invoking the command.

fervent sage
#

i'd agree if this were some random non-technical server, but in a server full of technical people i just cant understand why a technical detail would be a bad thing

#

its another piece of interesting information which adds onto the command and just gives a little more insight into what it took

tawdry vapor
#

It's a distraction just like I said. It would be in any context, including a technical server. Exception being when you want to actually benchmark it for some reason.

fervent sage
#

i disagree but i see this is a pointless argument ¯_(ツ)_/¯

patent pivot
#

My thoughts:
– How much does that value fluctuate, it's probably either going to be very short or very long (examples I've seen are 0.2s-2s), and in the longer cases you probably know that because the command takes a bit to respond.
– We should definitely be caching the responses from latex if it is a task which takes multiple seconds, probably in a volatile cache that stores the last X queries. Generation time does not make sense in that context.
– If we do decide to include it we certainly need to trim down that floating point, 0.23289893932s and similar is just annoying, 2 decimal places maximum.

tawdry vapor
#

It's not even an interesting detail IMO because it's not like one would expect this to take a long time to render. It's more interesting when something does (or is perceived to) take a long time.

fallen patrol
placid ermine
#

so uh
do i add the embed/timing or nah?

fervent sage
#

If sir-lancebot#672 it might not be needed

placid ermine
#

alright then

cold moon
#

Does anyone know how to get absolute URLs from response.redirect_chain in Django test client? Currently this is returning relative URL /path/to/page, but django_hosts reverse is returning full URL.

short snow
#

response.redirect_chain[-1] returns the relative url, on that you can just do request.build_absolute_uri(), to get the absolute url.

hardy gorge
#

@thorny obsidian Is there a branch somewhere I can spin up and test?

thorny obsidian
solid pumice
#

@thorny obsidian nope what it does is create a file with the code inside and then with pty processes it runs the code interactivlly

thorny obsidian
solid pumice
#

but I can do it

short snow
#

should some logic be implemented on int eval to protect from forkbombs and etc?

thorny obsidian
#

So that's our cornerstone feature of snekbox. We can run untrusted user input. It's the most important part of the project so unless another implementation can do that it's not something we'll consider

thorny obsidian
solid pumice
short snow
#

well i know about that, but you should always be on the safe side, what if someone finds a potential way of doing it?

brazen charm
#

Getting user input from stdout is not particularly hard even with current eval as you can patch it

#

Restricting the internal eval would really make it lose its purpose

fervent sage
solid pumice
fervent sage
#

though given it's running on k8s any fork bomb or filesystem stuff wont affect much, and you'd have to be actively trying to do so to mess up server stuff like channels/whatever

#

so really i'd agree that validation is not super necessary here

brazen charm
#

Messing with the system is not that impactful compared to what you can do with the server itself

short snow
fervent sage
#

true, but again you have to be trying to mess up server stuff

green oriole
#

There is no way to really mess it up considering that almost any programming issue will lead it to reach a resource limit and restart

fervent sage
#

at which point again you have bigger issues

green oriole
#

I am fairly confident that it will recover itself from potential problems

#

If you are deleting the whole server because of a programming error there isn't much we can do to prevent it

short snow
#

we could prevent it from deleting resources

green oriole
#

Well admins already used it to delete some stuff

thorny obsidian
#

And our mitigations to be safe for this revolve around how we deal with the admin role itself. I'm wary of trying to build in protections into snekbox if that'll prevent us from dealing with raids or investigating issues.

green oriole
#

The whole goal of int e is that it isn't restricted

brazen charm
#

Accidentally messing with it sounds like it'd lead to a short downtime at worst to me. You can't restrict it whole without limiting its uses and if only some things are limited it can be (accidentally) worked around

green oriole
#

I think we can safely assume that admins will only run evals they are 100% sure will work correctly

short snow
#

i know our staff is smart and has lot of verifications, but sometimes mistakes can happen, like it happened on coding den, and they got raided

fervent sage
#

even if you do try to restrict stuff, as @slow steppe and myself found out it's a futile act regardless, in combination with all the other points about it being admin only etc.

thorny obsidian
#

Coding den was a social engineering thing, limiting int e would not have prevented that

fervent sage
#

anyways, i have been awake for 26 hours and just did 32 miles of cycling so im gonna go to bed and die in peace kek

green oriole
#

... How

short snow
green oriole
#

Well context is important

#

Do you think we should put restrictions in int e in case an admin account is compromised?

thorny obsidian
#

But I am wary of limiting int e because if we're trying to troubleshoot an issue and we build in protections that prevent us from properly troubleshooting... that defeats the purpose of int e and then we'll just remove the protections and continue on as normal

balmy sparrow
green oriole
#

If we do have restrictions, admins should be able to bypass it

short snow
#

maybe it would ping admins, and then wait for an admin approval

balmy sparrow
#

or am i overestimating how good 2FA is

thorny obsidian
#

Again, the more impactful harm int e can do is that it can nuke the server. But we won't have a good way to prevent that without overengineering it to death

green oriole
#

It will protect against known passwords though

balmy sparrow
#

oh right I didn't think of that

thorny obsidian
green oriole
#

Listing who has a role should be a command tbh

thorny obsidian
#

We use it for more complicated stuff like the find out who is just a mod. So we need to subtract out those who have admin roles, etc

green oriole
#

We could have ways to select which roles to include and which ones to exclude

#

But that's out of scope for now I'd say

#

int e is used for more standard things than checking roles

short snow
thorny obsidian
#

But that's just an example. There are other int e things we do where it's just querying information. I don't want to focus down on an example.

short snow
#

yeah I understand

slow steppe
gritty wind
#

I don’t think limiting int e is something we’d consider at all

#

The whole point is that it’s a direct eval in the bot instance

magic arch
#

Would it be plausible to just find/replace the bot token in all int e outputs? That way it's not really restricted or anything but you can't just grab the token without at least a little bit of extra thought and playing around.

thorny obsidian
#

Honestly, if someone gets access to int e and they're a bad actor they don't need to try to find the bot token. They can run whatever code they want already.

gritty wind
#

If you get access to int e, you can already destroy the server without it

#

Admins can mass ban, mass delete, and do other mass destructive things

sleek steppe
#

Does @stable mountain have admin?

gritty wind
#

I don’t think so

#

But if you have int e, you have access to an admin account

#

Specifically the admin role

slow steppe
sleek steppe
#

set would not be helpful though

slow steppe
#

I mean if someone really wanted the token they could do it like that and just copy paste each letter or whatever

sleek steppe
#

set is unordered and doesn't have duplicates lol

gritty wind
#

Token[:-1]
Token[-1]

#

Put the two together, and you’ve got the token

#

I don’t think the token is that big of a concern though

#

If you already have the eval, what does the token grant you

cyan stirrup
#

Connect to all types of databases using python and then download the database? - Any help to get me started please ?

My goal is to do the following to reduce my day to day work labour-

Write a Python script that will take my Database type - Oracle, Mongo, MySQL, PostgreSQL, Microsoft SQL Server, SQLite, MongoDB, Redis, MariaDB, Firebase, Elasticsearch (any other type if there is any other type) My USERNAME and PASSWORD Then if I give a table name it will allow me to download the Database file - DB_file.parquet (etc.)

That's just my goal to download that DB. Please tell me how to start the process, I could use some ways to start the process for this. Please I request someone to help me out.

I'm new to programming, I'm a non-tech person trying to learn to code, only did some basic python PCEP certification.

gritty wind
#

Hey, this channel is for discussion about pythondiscord projects

sleek steppe
patent pivot
#

internal eval, executing code live on the prod bot

vocal prairie
#

If you have access to int e, you don't need the token.

#

Anyone who does is trusted.

#

So there's no real need to secure anything imo.

sleek steppe
gritty wind
#

Hmm we don’t really

#

I mean I can probably ask Joe to give it to me

#

But I have no reason

sleek steppe
vocal prairie
#

All I'm saying is that there's no need for extra security in int e.

#

Besides role validation.

gritty wind
#

Maybe it is, but I’m not on the team lol

sleek steppe
#

ah

patent pivot
#

It is a team app but only the owners are on the team

#

We access protect most of our passwords/secrets as need to know

fallen patrol
magic arch
#

They mean that admins are the only ones that have int e access, so anyone who can use int e already has admin perms

sleek steppe
#

admin can't ban as fast as @stable mountain tho 👀

green oriole
#

I mean if something like that happens I'd guess that the admin in question would self bot

vocal prairie
#

Is that for the sake of security or just cause?

patent pivot
#

it's just the way we've got things set up

vocal prairie
#

Okie

patent pivot
#

We are continuously improving security, a lot of our devops and moderation tooling works under a zero-trust architecture (https://www.cloudflare.com/learning/security/glossary/what-is-zero-trust/) and as I mentioned our credentials are shared on a need-to-know basis with admins and preferably use RBAC as well, so it's not unforeseeable that in future we'll look into securing features like internal eval, but I think the aforementioned solutions here are not useful from the proactive front.

However, I would not mind seeing this feature implemented anyway as a reactive measure, not as a security measure but more as an incident prevention measure. If an admin runs a snippet somewhere that accidentally returns an object which reveals the token then that token could easily be compromised. We don't need to try counter bypasses through things like character replacement or base64 encoding, just the most simple case. I think that a filter so simple is worth implementing.

vocal prairie
#

I agree.

#

Extra security features are pointless, but checking whether someone else might get something they shouldn't is smart.

short snow
#

@fervent sage can't say a bug, but yeah this needs to fixed

sleek steppe
#

Just have a max_concurrency check

short snow
#

that would max_concurrency spam then ig

sleek steppe
#

true

#

Won't it only send once though?

short snow
#

lemme test

fallen patrol
#

Just

#

If the command is itself, don't do it

#

It Shouldn't be able to time itself

sleek steppe
#

mhm

short snow
#

looks like max_concurrency needs a error handler

#

nope it won't spam, it will just send it once

#

i will comment on the pr quick

fallen patrol
vocal wolf
fallen patrol
#

Wdym

sleek steppe
#

oof

sleek steppe
#

yeah that ^

vocal wolf
#

wait

#

!docs discord.discord.ext.commands.BucketType

stable mountainBOT
#
class discord.ext.commands.BucketType```
Specifies a type of bucket for, e.g. a cooldown.

`default` The default bucket operates on a global basis.

`user` The user bucket operates on a per-user basis.

`guild` The guild bucket operates on a per-guild basis.

`channel` The channel bucket operates on a per-channel basis.

`member` The member bucket operates on a per-member basis.

`category` The category bucket operates on a per-category basis.

`role` The role bucket operates on a per-role basis.

New in version 1.3.
fallen patrol
#

Wtf

vocal wolf
#

that's stupid lol

fallen patrol
#

WHAT THE FUCK

vocal wolf
#

I mean it makes sense but at the same time like

#

why

fallen patrol
#

No it doesn't make sense

#

!d discord.ext.commands.Bot

stable mountainBOT
#
class discord.ext.commands.Bot(command_prefix, help_command=<default-help-command>, description=None, **options)```
Represents a discord bot.

This class is a subclass of [`discord.Client`](../../api.html#discord.Client "discord.Client") and as a result anything that you can do with a [`discord.Client`](../../api.html#discord.Client "discord.Client") you can do with this bot.

This class also subclasses [`GroupMixin`](#discord.ext.commands.GroupMixin "discord.ext.commands.GroupMixin") to provide the functionality to manage commands.

`command_prefix` The command prefix is what the message content must contain initially to have a command invoked. This prefix could either be a string to indicate what the prefix should be, or a callable that takes in the bot as its first parameter and [`discord.Message`](../../api.html#discord.Message "discord.Message") as its second parameter and returns the prefix. This is to facilitate “dynamic” command prefixes. This callable can be either a regular function or a coroutine.... [read more](https://discordpy.readthedocs.io/en/stable/ext/commands/api.html#discord.ext.commands.Bot)
fallen patrol
#

That's the bot

#

Why is the bucket type in a sub thingy shit stuff

vocal wolf
#

Nevermind, that makes no sense

fallen patrol
#

Yeah

#

I gtg

#

VACCINE

vocal wolf
#

have fun

patent pivot
vocal wolf
#

I thought it'd make sense, but now I'm just confused

patent pivot
#

as in likeeee

#

why it's discord.discord?

vocal wolf
#

ye

patent pivot
#

hmmm

#

probably just some weird logic on how we fetch the relevant inventory to scout from

green oriole
#

I can't load the docs I'm on mobile haha

sleek steppe
#

Yeah but BucketType links to discord.discord.ext.ect when others ink to discord.ext.ect

vocal wolf
short snow
vocal prairie
#

Since it's Sentry?

#

If not, then it looks good to me.

vocal wolf
#

It doesn't have anything to do with sentry

vocal prairie
#

Okie

vocal wolf
tawdry vapor
#

I don't think

#

I just didn't get around to testing it after you fixed the config issue

vocal wolf
#

alright

#

ty

brazen charm
vocal wolf
#

huh

balmy sparrow
brazen charm
#

Feels somewhat hacky as it could've just been setting the current module to the actual module and only specifying the class name, but then I'm also not completely sure how the autoclass ignores the module name before the class names as I'm not that familiar with sphinx

short snow
#

dawn and toxic have you guys tested the pr and then approved?

#

ig yes, i wouldn't fire up docker

#

so you have test it?

vocal prairie
#

mhm. It worked fine for me.

vocal wolf
tough imp
#

I'll take a look once I get out of my post-food coma

vocal wolf
tough imp
#

but I probably cannot test; I dont have help channels set up in my guild

vocal wolf
#

rip

fallen patrol
#

Ik that @short snow has help channels set up

thorny obsidian
#

oh come on! flake8 passed locally

sleek steppe
#

Happens all the time 😔

thorny obsidian
#

the pre-commit hook isn't catching this either

sleek steppe
#

It's the same error too thonk

#

Also this is interesting

#

I get this error for help channels

#

because I don't get that error in the shell

vocal prairie
#

Wrong versions of packages?

fallen patrol
#

smh

dusky shoreBOT
fallen patrol
#

Sir-Lancebot#673

dusky shoreBOT
fallen patrol
#

i-

#

sir-lancebot#673

fallen patrol
#

ok.

vocal prairie
#

We need that better regEx lol.

fallen patrol
# dusky shore

for this, i see a hardcoded url to a pydis site but shouldn't it be an internal url?

thorny obsidian
#

god damn fucking finally.

#

@gritty wind @green oriole As an FYI, with a blank install of Sir Lancebot with the usual pipenv sync --dev and with the precommit hook my flake8 was passing locally but failing github actions. No idea what was going on.

vocal prairie
#

Local stuff goes brrr sometimes.

thorny obsidian
#

Let's test out a poetry install though

vocal prairie
#

Is poetry nice?

thorny obsidian
#

no idea, but I heard it's faster thank pip locking

#

*pipenv locking

vocal prairie
#

That sounds like the yarn vs npm situation.

#

npm is older so more accepted, while yarn is better in performance.

sleek steppe
fallen patrol
thorny obsidian
#

huh?

#

Oof, too tired to install 3.9. Poetry testing will be another night

fallen patrol
#

which is exactly what @stable mountain does

thorny obsidian
#

Do you have a link or file w/line number?

fallen patrol
#

yep! linked above, follow the reply chain

patent pivot
#

not sure I'm following this

fallen patrol
#

yes

thorny obsidian
#

That's python's though?

patent pivot
#

that's not hardcoded

fallen patrol
#

yes that's my point

patent pivot
#

okay so

fallen patrol
#

context is above

#

pls read

patent pivot
#

I get the argument about hardcoding invites

#

I don't get this at all

thorny obsidian
#

So you replied to my PR but you don't provide any additional context. I don't know what you're specifically talking about

fallen patrol
#

ohhhh i didn't give the line number

patent pivot
#

I don't get the argument here

vocal prairie
#

I think they're saying that instead of having the url hardcoded, it should be referenced from a config. (I don't really agree)

patent pivot
#

the paste service is:
a) always publicly available
b) always going to be on pythondiscord.com (we're always going to have that domain)
c) very very easy to change and not volatile enough that it warrants the addition of a new environment variable

thorny obsidian
#

what is it? I am so lost

patent pivot
#

so no, this should not be hardcoded

patent pivot
#

one sec I'll get you the actual lines

fallen patrol
fallen patrol
thorny obsidian
patent pivot
#

nope

#

it's fine as is

fallen patrol
patent pivot
#

because python has a config system

thorny obsidian
#

Okay cool. I generally trust Seb's implementation of int e and tried to keep it intact as much as possible.

fallen patrol
patent pivot
#

just because Python does something doesn't mean we have to do it on lancebot

#

yes, sir lancebot works entirely off environment variables for now

#

and even if we did, this is such a minuscule item in a PR which is never going to be important for the reasons above

#

we aren't deploying an application which has to be future proofed, if we need to change things we can just sed on the source and update very easily, it's not something that needs configuration

thorny obsidian
#

okay turns out I wasn't too tired to try out poetry wheeeeeeee

patent pivot
#

lol

#

it's p good

sleek steppe
#

^

thorny obsidian
#

what's the poetry command to actually start the bot?

patent pivot
#

lancebot?

#

we don't use poetry on lancebot yet

thorny obsidian
#

You have a draft PR for it, no?

patent pivot
#

ah yeah,

#

the draft PR is poetry run task start iirc

thorny obsidian
#

eeeey there we go thanks

#

I was trying poetry run start and poetry run task but not all of it together

#

Is pretty nice

placid ermine
#

(bump on sir-lancebot#668)

dusky shoreBOT
fallen patrol
fervent sage
#

@sleek steppe do you ever just want to cry

sleek steppe
fervent sage
#

i just removed 'valid' from it

sleek steppe
#

lol

fervent sage
#

valid isnt important enough for me to care about changing stuff around it to accommodate its existance

#

spot the missing . aAAaaAAAaa

thorny obsidian
patent pivot
#

reviews

thorny obsidian
#

Core dev or anyone?

sleek steppe
#

lol

patent pivot
#

will have a review now

#

uhhh

fervent sage
#

approve mine and i'll approve yours kek

patent pivot
#

let's see

sleek steppe
#

yeah it's core dev

#

wait nvm

patent pivot
#

yeah chris approved

#

so just any staff

sleek steppe
#

forgot chris is core dev now mmLul

thorny obsidian
#

Cool, I'll see if I can review it in the morning if no one else has yet

fervent sage
#

im gonna dedicate the next 15 minutes to breaking the .timed command i made

sleek steppe
#

@fervent sage shouldn't you use constants.Client.prefix instead of doing .help

#

or maybe just ctx.prefix

fervent sage
#

already fixed but not committed

#

trying to break it first

sleek steppe
#

ah

patent pivot
#

review left on sir-lancebot#668

dusky shoreBOT
fervent sage
#

looks like ive fallen back into conventional commits kek (which is a good thing, but consistency lol)

deft patrol
#

True

placid ermine
#

so uh for the latex thing
it takes at worst 10 seconds on my laptop for the weirdest of weird expressions, for normal expressions it rarely takes over a second, and almost always remains <2-3 seconds

#

also, i have never cached anything in files

#

how does that work
like
it's not like i just dump a dict in a txt file

fallen patrol
#

I use the mobile browser for all of my github needs because the mobile app is missing so many features.

balmy sparrow
patent pivot
#

github app is nice

patent pivot
placid ermine
#

oh

patent pivot
#

then before you generate one the next time you hash the query again and check if it exists under _latex_cache and if so send that, else generate, save and repeat

placid ermine
#

that's simpler than i thought

#

i think

patent pivot
#

your call, if it's consistently the same time it's fine, and we're using an executor so should be good

sleek steppe
magic arch
#

I feel like a cache wouldn't be too useful though as usually latex expressions would probably be pretty unique. Sure, definitely help out a bit but not sure if it's worth it tbh

tawdry vapor
#

I'm inclined to agree but I don't mind if someone wants to implement it just cause they can

fervent sage
#

from now on im just going full conventional commits because they're nice and i do them by default kek

fallen patrol
#

Note: android

patent pivot
#

for what I need to use it for it works well

#

stuff like deploy approvals, issues & discussions and GitHub Enterprise it's good

placid ermine
#

how about clearing the cache

#

when should that happen

fervent sage
#

latex renders wont change, cache clearing doesnt matter, if it happens it happens

patent pivot
#

in production it will automatically happen on restart, there is a use for clearing to prevent the disk from filling (unlikely but ¯_(ツ)_/¯). I guess in that situation we say "store maximum 100 files and delete based on oldest used time"

placid ermine
#

aight, so i don't have to worry about it, right?

fervent sage
#

my take is:
in production which is the only place it will be long running since its specific to pydis it's gonna get cleared on restarts
not in production it will be ran rarely ever or at most infrequently, so size likely is of no concern

patent pivot
#

I don't foresee it cropping up. It'd be nice to have the logic in place eventually but I'd be happy to work with that if an issue is opened and it's fairly low priority

placid ermine
#

nice

placid ermine
#

done

#

_latex_cache is supposed to be at this level right

cold moon
#
from django.views.generic import RedirectView


class CustomRedirectView(RedirectView):
    """Extended RedirectView for manual route args."""

    @classmethod
    def as_view(cls, *args, **initkwargs):
        """Overwrites original as_view to add static args."""
        cls.static_args = args
        return super().as_view(**initkwargs)

    def get_redirect_url(self, *args, **kwargs):
        """Extends default behaviour to use static args."""
        args = args + self.static_args
        return super().get_redirect_url(*args, **kwargs)

Why does routes to what I don't pass static args have static args of other routes?

green oriole
short snow
#

uhh, do we really need latex cache? It is pretty fast already, and mostly the latex equations are different

cold moon
#

I also think cache is not necessary, because chance that between redeploys command get executed twice with same input is really small

green oriole
#

Are we really gonna render the same latex command many time in a row? I don't really think so, sounds like something that should be solved with a rate limit

placid ermine
#

i don't really like the idea of rate limiting it tbh
if the command is being used chances are that it's being used as part of a longer conversation where other people might also use the command to follow up

cold island
#

Caching sounds a bit over engineered for a feature that we don't know how often it's going to be used and how. If it's going to be used in the middle of conversation then a modest rate limit should be barely felt. So let's start with that and then consider adjustments when we have usage statistics

#

I will also argue that a minimal rate limit is necessary even with caching.

green oriole
#

I also think we should rate limit resource intensive tasks

#

Although we have automatic mutes

cold moon
#

Max ratelimit what is reasonable is 5s, not more

short snow
#

agree

patent pivot
#

My reasoning for cache is to prevent DoS attacks, but it people are in consensus otherwise then that's fine

vale ibex
#

We could put a user cooldown+guild cool down on it

cold moon
#

No, if user start spamming with it, @stable mountain catch this user

vale ibex
#

Still would leave us open to a ddos with multiple users

#

But we have that when worse with the pfp stuff anyway

cold moon
#

Sir Lancebot is not so important service, and we have resource limits in k8s

patent pivot
#

We shouldn't rely on that, but I guess so yes

vale ibex
#

We could put a max concurrency on it

#

Then we have the choice to queue or cancel

cold island
#

Shouldn't it be in the same class as the other image-based commands?

#

Chris iirc you were working on queuing those

vale ibex
#

Yea I've got them in executors but not in the same concurrency bucket with this pr

cold island
#

yeah I think that's fine. Whichever gets merged first we can adjust the other

vale ibex
#

Max concurrency doesn't work with groups out of the box

#

So need to implement a custom bucket

cold island
#

That should prevent any possible DoS attacks

#

or well

#

mitigate what they affect

#

Is there some sort of cooldown for that custom bucket?

vale ibex
#

It doesn't exist yet, so there could be

cold island
#

I'm just thinking

vale ibex
#

I was planning to implement it similar to max concurrency

#

So it would queue up the commands

cold island
#

what if you get 100 invocations for image stuff. Each of those is blocking

vale ibex
#

And there would be a max le gth of the queue

#

I've got them in threads now, so they're not completely blocking

cold island
#

I see

vale ibex
#

Sir-lancebot#597

dusky shoreBOT
vale ibex
#

... Case sensitive regex

cold island
#

lol

vale ibex
#

sir-lancebot#597

dusky shoreBOT
cold island
#

should also probably look for word boundaries

vale ibex
#

Yea, it's in akarys's pr

#

So soon ™️

cold moon
#

I think if we add max concurrency, then this should be at least 4-5

short snow
#

btw did the absolute url thing work last time?

cold moon
#

Yes

vale ibex
#

Ah lol, I'm disqualified from review bot since I've got a commit on your PR @green oriole

green oriole
#

haha

vale ibex
#

So is Vco 😛

green oriole
#

Interesting

sleek steppe
#

Oh lol

vale ibex
#

That's likely because I had requested changes

#

and since approved

green oriole
#

Well at least my commits aren't all red anymore

vale ibex
#

hah

fervent sage
#

well while there are a few devs here :P
could i get some reviews on sir-lancebot#672

fervent sage
#

on a side note im so proud that i didnt make flake8 lint unhappy even once

vale ibex
#

How much is it worth 👀

vale ibex
#

Possibly the single most important PR to date sir-lancebot#675 /s

thorny obsidian
#

Hurm, how do I check if the logging is correct

vale ibex
#

correct in what way?

gritty wind
#

I might be missing context, but what do you mean

thorny obsidian
#

I don't know how to set up so I can check if the log.trace is working

vale ibex
#

Ahh, put BOT_DEBUG=true in your .env

placid ermine
#

aaa i forget i have to git add all over again after changes

sleek steppe
#

git commit -a -m "..."

placid ermine
#

i am not used to that and i am not going to change old habits
||/s||

sleek steppe
#

😔

short snow
thorny obsidian
#

Chris helped me get the logging.trace, which is what I was trying to check.

patent pivot
#

lol

#

have i triggered a shipit trend on our repos

placid ermine
#

lol

placid ermine
#

added max_concurrency and stuff to sir-lancebot#668

dusky shoreBOT
short snow
thorny obsidian
#

Did you not test it yourself to see how they looked? I assumed you did

sleek steppe
short snow
placid ermine
patent pivot
#

yeah the log trace doesn't clarify things with the = syntax

placid ermine
#

not that it makes much of a difference anyway

patent pivot
#

it might with log.trace(f"Updating locals {self._locals} with {locals_}") but it's a trace log and points to the logger so it should have enough

short snow
short snow
patent pivot
#

Yes, but I don't think that's clearer than keeping it like it is currently or what I proposed above

short snow
#

Yeah yours would be clearer

patent pivot
#

uhhhh

#

i'm tempted to say we leave it, we do sometimes feed out a python object

short snow
#

Ok, i don’t think paste to hastebin would be used anywhere else, but should it be a utils function

patent pivot
#

we'll do what we did with Python, we keep it in a cog until we need it elsewhere and then we promote it to a utility

patent pivot
#

yes

green oriole
#

Mhm?

#

Wait

fallen patrol
#

using the escape method means that all other markdown characters will be backslashed

green oriole
#

That.. doesn't make much sense

#

What if you just escape the backslahes?

fallen patrol
#
\\
#

in codeblocks, all characters are rendered

green oriole
#

Err not the backslahes, the backticks

#
\`\`\`
#

Hmmmm

#

Is there no way to do that

patent pivot
#

nope

fallen patrol
#

the <hacky> solution i use in my bot is a zero width space around ``

green oriole
#
\```
#

That sucks so bad

#

Maybe a zero width could work

fallen patrol
#

hm

#

joe

gritty wind
#

for the most part nothing really happens if a user manages to break out

fallen patrol
#

does @stable mountain prevent it?

patent pivot
#

prevent what

#

don't think so

gritty wind
#

We had an issue a few days ago that showed how to circumvent it

fallen patrol
green oriole
#

Well the problem is just that it looks bad

patent pivot
#

!int e ```py
print("`" * 3)

stable mountainBOT
#
In [2]: print("`" * 3)
patent pivot
#

yeah

fallen patrol
#

i just

gritty wind
fallen patrol
#

what i did for my bot

gritty wind
#

you're probably trying to break out

fallen patrol
#

is if it escapes it just uploads as a file instead

gritty wind
#

and in that case, that's sort of on you

fallen patrol
patent pivot
#

does it?

#

!e ```py
print("`" * 3)

stable mountainBOT
patent pivot
#

ah yeah

green oriole
#

It is for int e though

fallen patrol
#

you could just do that for int e

#

if it tries to escape just paste it

#

because that way you get the full response for the one case when you need it

#

¯_(ツ)_/¯

hardy gorge
#

I don't mind it as much on int e. int e is an internal feature that only admins can use anyway.

sleek steppe
#

For the raw command we just replaced ` with `\u200b

fallen patrol
#

note: if y'all don't care i brought this up because @green oriole commented

gritty wind
#

This feels like a different case because

#

it is something you can do accidentally

#

how do you enter a zero-space width accidentally

green oriole
#

Got rid of the comment

fallen patrol
#

oh wait

green oriole
#

It was indeed wrong, thank you

hardy gorge
#

I don't like inserting zero-width spaces, because I often copy things from internal eval for a next evaluation

fallen patrol
#

i have a comment on that same line of code anyhow

hardy gorge
#

If the bot were to insert zero-width spaces, that would become tedious

fallen patrol
#

should have a \n before the last three ```

hardy gorge
#

I could still copy my own output, but it's something pushed far to the top

fallen patrol
#

yeah

#

the thing about it is

fallen patrol
#

when it escapes is the only case it would be there

hardy gorge
#

I feel like the number of times we are actually trying to do something with triple backticks are very limited

#

I don't think it's ever really come up with internal eval

fallen patrol
#

im of the camp that if the output contains ``` just upload to pastebin

hardy gorge
#

For internal eval?

thorny obsidian
#

The screenshot akarys has there is not a result from the int e command. It was my copying and pasting code from int e.

fallen patrol
#

it uploads if its too long already

#

so it'd just be a small check to do so

fallen patrol
hardy gorge
#

I don't think I like uploading output too often for internal eval

#

We're typically scripting over a longer session of internal evals

#

Having the output in the browser gets in the way of that flow

#

So, unless something is really breaking otherwise, I'd prefer to keep output in the client

fallen patrol
#

do remember, it would only upload if ``` is in the output, and if it did send directly to discord, then it would not be copyable output

hardy gorge
#

But you'd still have the output directly in the client and your own message to copy from

fallen patrol
#

but

#

you wouldn't

#

in the rare case that you want ``` it would escape the codeblock

hardy gorge
#

I can still click edit on my message and copy my input, right?

fallen patrol
#

yeah, but you wouldn't easily be able to copy the output

hardy gorge
#

And I still have the output right here in the client

fallen patrol
#

but it would look like the above image

hardy gorge
#

I don't see a lot of things wrong with that

#

I have all the output I need right there

patent pivot
#

having used internal eval hundreds of times now I don't see a situation where triple backticks have ever been returned

fallen patrol
#

basically, the only thing this affects is if you output ``` then any markdown in the message will be absorbed by markdown and you won't be able to copy it really

#

a very edge case

hardy gorge
#

Yes, and I don't care that in such edge cases the output is less than copyable

#

I do care about keeping the output in the client as much as possible

fallen patrol
#

you could also convert it to upload as files rather than to the pastebin which would then auto embed on pc

hardy gorge
#

I mean, this is a feature that we use internally

thorny obsidian
#

I don't really see the need to solve this one edge case for an admin-only command that, in all honestly, won't be used a lot on lancebot

hardy gorge
#

I think that unless one of us (admins) really wants it differently, I don't think we should solve such edge cases

fallen patrol
#

why is this so huge

fervent sage
fallen patrol
#

source: I opened all of the links and added them to a playlist

gritty wind
#

it was recently updated

fervent sage
#

git blame says someone called Neil Shah added razer vids to the google category :P

patent pivot
#

ah I might have approved that lol

gritty wind
#

All the links are sorted under google, so it's easy to see why someone would add that accidentally

#

especially since it was towards the bottom

fervent sage
#

well, sir-lancebot#676 should fix it

vocal wolf
fallen patrol
# dusky shore

….and all of a sudden the apparent logic of the entire command is exposed

#
        random_youtuber = random.choice(self.youtubers)
        category = self.yt_vids[random_youtuber]
        random_vid = random.choice(category)
gritty wind
#

why don't we have the json pre-commit anymore

fallen patrol
#

first it chooses from one of the youtubers, then it chooses on the videos

gritty wind
#

would've been useful here

vocal wolf
fallen patrol
#

this means that razer will have a 50% chance to be the video

fervent sage
vale ibex
#

It's because we have commits on the branch

gritty wind
#

chris and vco commited

#

yeah, what they said

fervent sage
vocal wolf
#

gosh diggity darnit

balmy sparrow
#

wait staff approvals are enough for merges? not core-devs?

vocal wolf
#

alright scal time 4 you to review

fervent sage
#

2 staff or 1 core dev iirc

vale ibex
#

It's and iirc

gritty wind
cold island
fervent sage
#

ah right

gritty wind
#

1 core dev and 2 staff to be exact

balmy sparrow
#

right makes sense

gritty wind
#

but all core devs are staff so

vocal wolf
#

lol

gritty wind
#

1 core dev and 1 non-core dev staff is what it works out to

vocal wolf
#

alright who's going to review that one before the meeting

patent pivot
#

contributors can also provide the second review

vocal wolf
#

if anyone

fallen patrol
patent pivot
#

the role

gritty wind
#

why is this such a big diff lol

patent pivot
#

I have to manually add them to the policy

gritty wind
#

shouldn't it have just removed the check

vale ibex
#

It's a rewrite too 😅

sleek steppe
#

And some other PR's for the issue cog

gritty wind
#

alright, I won't do this justice in 20 minutes

vocal wolf
gritty wind
#

oh that's finally ready? 👀

vocal wolf
#

ye

#

I'll turn my bot on

gritty wind
#

very nice

cold island
fervent sage
#

timed execution woo, thanks chris

vocal wolf
#

@gritty wind if you want to test it, my bot is up on the test server

gritty wind
#

thank, I'll look at it soon™️

#

how much has it changed since v1

balmy sparrow
# cold island 🤔

the pipenv to poetry PR also has a "hacktoberfest accepted" label on it for some reason

vale ibex
#

😀

hardy gorge
#

because poetry is one big hack that's only supposed to appear during halloween

#

(disclaimer: I like poetry)

balmy sparrow
#

oh lmao

#

me too, poetry is nice

sleek steppe
#

poetry is the best

fervent sage
#

if there's one feature from poetry i love more than anything else

#

it's how simple it is to publish packages

hardy gorge
#

poetry has some quirks and is fairly opinionated

#

I haven't experienced it myself (yet), but I've heard that it doesn't deal well with being run in very protected environments, with custom certificates and a lot of network rules

placid ermine
#

bump sir-lancebot#668

dusky shoreBOT
sleek steppe
#

bump bot#1471

fervent sage
fallen patrol
vocal wolf
#

yes

sleek steppe
#

yes

vocal wolf
#

and I'm waiting for it to connect

fallen patrol
#

wait will it send a new message every channel or every update

sleek steppe
fallen patrol
#

connected

sleek steppe
vocal wolf
#

it worketh

fallen patrol
#

why

#

its not in the same order as they physically are

vocal wolf
#

because that would be very painful to do

fallen patrol
vocal prairie
sleek steppe
#

sorted(channels, key=lambda c: c.position)

fallen patrol
vocal wolf
#

yes.

fallen patrol
#

how painful?

vocal wolf
#

So painful that I decided to use a set

fallen patrol
#

no?

#

roles not related to this at all

sleek steppe
vocal wolf
#

At the same time I wasn't sure at the time of writing the PR that having it sorted would be necessary

#

if anyone wants to write a PR to have it sorted, go ahead

sleek steppe
#

I don't think it's necessary

vale ibex
#

I'd prefer attrgetter, rather than lambda but that would work

sleek steppe
#

operator.attrgetter right? I could make a PR for it if you want

vale ibex
vocal prairie
#

Why does the order matter though?

#

Just curious.

vale ibex
#

It doesn't really, its just polish

fallen patrol
#

….

#

what happens in the rare case that there is no channels?

sleek steppe
#

available=', '.join(c.mention for c in self.available_help_channels) or None

fervent sage
#

rare kek

vale ibex
#

heh

fervent sage
#

that being said i havent been pinged for that in like a week now which is nice

fallen patrol
#

'None' would better

sleek steppe
#

why?

vale ibex
fallen patrol
#

Currently available help channel(s):
vs
Currently available help channel(s): None

fallen patrol
#

since monday ig

gritty wind
#

we hit the limit basically right after we raised it

#

I don't remember what day it was

fallen patrol
#

the 5th

#

which was monday lol

sleek steppe
#

works nicely

eager fable
fallen patrol
#

notice the role color

vocal wolf
patent pivot
#

it was earlier than the 5th

eager fable
fallen patrol
sleek steppe
#

Darn the line is 123 chars long 😔

patent pivot
#

31st March

#

and we have hit the limit since

gritty wind
#

The change happened 12 days ago

fervent sage
gritty wind
#

according to github

sleek steppe
#

does this look fine lol

fallen patrol
#

sometimes

#

discord lies

#

or they aren't how they actually sort

gritty wind
#

double quotes please

sleek steppe
#

ah right

fallen patrol
#

😛

#

I actually still code in single quotes and then black it

gritty wind
#

what I have seen is it's safer to assume people don't have it setup correctly

fallen patrol
#

ah

gritty wind
#

no matter how long they've been contibuting

sleek steppe
#

That line already had single quotes 😔

gritty wind
#

Noted, will ban xith promptly

fallen patrol
#

yep i see

fallen patrol
#

also case in point, the repo checks didn't catch it

gritty wind
#

perhaps the rule doesn't exist

brazen charm
#

Don't think quotes are handled during linting

vocal wolf
#

@gritty wind you reviewed, we're both getting banned

gritty wind
#

it was good knowing you

vocal wolf
#

lmfao

gritty wind
#

the check does in fact not exist

gritty wind
#

(at least not anymore)

fallen patrol
#

very cool

vocal wolf
#

banded

fallen patrol
#

mute circumvention smh

vocal wolf
#

@gritty wind push double quotes to master lol

gritty wind
#

god damn it

#

we don't have that perm

#

aaaaaaaaah

vocal wolf
#

aaaaaaaaa

#

heck

gritty wind
#

actually Mr.Joe does 👀

#

nah it can be fixed in Toxic's PR haha

patent pivot
#

lol i don't

#

well

#

i do but i have to go put on my admin hat and go "yes"

#

and i don't wat to put that hat on

gritty wind
#

Well, if you want another hat, I have opened a hat shop

#

I only take payments in Joe hours

patent pivot
#

i have so many hats

#

AT LEAST 3 hats

gritty wind
#

woah

sleek steppe
#

bot#1516 needing reviews

fallen patrol
#

add timed command for timed execution of commands - vcokltfre

gritty wind
#

that was merging master

#

syncing the branch basically

sleek steppe
#

It was merged into automatic linking of issues pr

fallen patrol
#

o

vocal wolf
#

@sleek steppe tyvm for the PR!

sleek steppe
#

Np lol 🙂

fallen patrol
#

double deploy!

#

double deploy!

fallen patrol
#

how can i make a pr or something for @slow bone

gritty wind
#

You'd check out the modmail repo's contributing guide

#

?about

slow boneBOT
#

This is an open source Discord bot that serves as a means for members to easily communicate with server administrators in an organised manner.

Uptime

5d 17h 7m 38s

Latency

115.00 ms

Version

3.9.2

Authors

kyb3r, Taki, fourjr

Hosting Method

DOCKER

Want Modmail in Your Server?

Follow the installation guide on GitHub and join our Discord server!

Support the Developers

This bot is completely free for everyone. We rely on kind individuals like you to support us on Patreon (perks included) to keep this bot free forever!

gritty wind
#

it's the want modmail in your server category

fallen patrol
#

ah because

#

its a minor detail but easy to fix

#

if i can load dms with it sheesh

gritty wind
#

I don't think we host a modified version, but feel free to make the suggestions

fallen patrol
gritty wind
#

interesting

fallen patrol
#

its an easy enough fix

gritty wind
#

what's the issue?

fallen patrol
#

reason: its a link to the server icon so when it changes the link is invalid

gritty wind
#

Right, so we need like a bot restart on icon change?

fallen patrol
#

MOST if not nearly all servers using the bot this doesn't impact them

#

no, because when that message was sent the icon was fine

#

its probably not worth it to change but

#

it would have to be a bot code edit

vocal prairie
#

But you want to?

patent pivot
#

what is the fix here

gritty wind
#

I don't think that's worth doing

fallen patrol
#

^

gritty wind
#

it would make updates quite difficuilt

#

ultimately, it would be a nice fix, if it adds no maintenance burden to us

#

aka if it changes upstream

patent pivot
#

if you want to push a fix then push it upstream, we're not modifying our local bot code from a fork or something

fallen patrol
#

i'll have two answers for it later, and then try it upstream

#

but there's two ways to do it

#

ultimately one way is perhaps better, and that could be adding a feature to allow servers to set that icon

#

other way is uploading the server icon to the embed

gritty wind
#

is that supported for footers?

fallen patrol
#

its supported for all images in the embed afaik

gritty wind
#

Iirc footers are specifically URLs, not images

#

but I'm probably misremembering

fallen patrol
#

i mean

#

it is a url

#

attachment://name.ext

gritty wind
#

Oh so you're thinking a separate attachment?

fallen patrol
#

where name.ext is a file that is uploaded in the same message