#dev-contrib

1 messages · Page 161 of 1

molten bough
#

oh that's a fork too, okay

#

I was wondering

fallen patrol
#

I've been working with disnake myself

clever wraith
#

everything is a fork

#

even me lmao

molten bough
#

clearly we all should have been using disco this whole time

#

haha

gritty wind
#

We're not switching right now, I don't think we even have enough active members to get a PR through, or all the inevitable fire-putting-out PRs

molten bough
#

metricity is small enough that you likely don't need to put out many fires

#

though tbf this isn't a huge issue

fallen patrol
gritty wind
#

It's fine with metricity honestly, worst case scenario if metricity goes down is we lose a bit of data

#

That's already happened

#

Most people didn't notice

clever wraith
#

they are all drop-in replacements tbf

fallen patrol
#

okay that's not accurate, one of the hosting datacenters had a fire but that wasn't related.

gritty wind
#

Bot goes down and this server goes poof

#

We're in no rush to upgrade right now, I'll leave it at that

molten bough
#

we have users that rely on our stats to figure out which channels are worth looking at in the morning

#

which is amusing

#

but this doesn't break that

fallen patrol
gritty wind
#

I'm trying to debug this right now, but honestly the command may be harder than having the bot just print out any calls to terminal

#

It ran once, then the command stopped working

#

I don't get it

fallen patrol
molten bough
#

debugger when

vale ibex
#

Where did you add the process commands?

gritty wind
#

Debugger is active, but nothing is even being called

molten bough
#

hmm

gritty wind
#

bottom of on_message

fallen patrol
#

use the thingy event to get the thingy debug in the thingy

vale ibex
#

There are a bunch of quit early returns in on_message

gritty wind
vale ibex
#

look at my PR and add it to the same place

fallen patrol
vale ibex
#

We don't have any cogs

#

so no way to add listeners...

fallen patrol
#

do you need one?

gritty wind
#

Shouldn't we check for bot

molten bough
#

kinda bikesheddy

fallen patrol
#

!d discord.ext.commands.Bot.listen

gritty wind
#

(in your PR)

stable mountainBOT
#

@listen(name=None)```
A decorator that registers another function as an external event listener. Basically this allows you to listen to multiple events from different places e.g. such as [`on_ready()`](https://discordpy.readthedocs.io/en/master/api.html#discord.on_ready "discord.on_ready")

The functions being listened to must be a [coroutine](https://docs.python.org/3/library/asyncio-task.html#coroutine "(in Python v3.9)").

Example...
fallen patrol
#

yeah you don't need a cog for that

vale ibex
#

Ah fair enough

vale ibex
clever wraith
gritty wind
#

if not message.author.bot: process_commands

molten bough
#

welcom to huudraulic.. wait

vale ibex
gritty wind
#

Yeah still no lock with the sock command

vale ibex
#

but the bot isn't really going to be invoking it's own commands

fallen patrol
#

literally move the current listener to this ```py
@bot.listen("on_message")
async def process_messages():

gritty wind
#

Am I just not adding the cog or something

fallen patrol
#

and then remove process commands from it

gritty wind
#

Craft a nice eval, ping the bot, tell it do whatever

vale ibex
#

Ahh

fallen patrol
#

sigh

vale ibex
#

Where are you loading the extension?

gritty wind
#

Last line of main

#

bot.add_cog(Internal(bot))

#

I know it's working because

#

It's just not working anymore

fallen patrol
#

so after bot.run()?

vale ibex
#

bot.run isn't in main

gritty wind
#

There is no bot.run here

#

that's in __main__

molten bough
#

I keep forgetting d.py doesn't use a type heirarchy for that

#

would be a lot easier to listen

fallen patrol
#

!paste

molten bough
#

spoiled by kord lmao

#

does d.py not have trace logging you can use to see the gateway events?

#

if so, seems like a simpler solution

gritty wind
#

not afaik

fallen patrol
gritty wind
#

I don't think they have any logging

#

I've already patched the event

#

If that's what you're suggesting

fallen patrol
#

@molten bough it has this

#

which will log the type of event received

gritty wind
#

Also I know that everything is loaded properly because:

fallen patrol
#

sigh i'm on pc again

gritty wind
#

those messages are seconds apart

molten bough
#

you seem to be going to a lot of effort to debug a debugging tool, is my point

#

so maybe it's worth taking a simpler route

gritty wind
#

The simpler route here is collecting all these metrics by hand

#

D.py exposes them in an event, but not in a readable way

#

The function that gets the output is not being called

molten bough
#

so then all you should have to do is work up the potential call tree until you find a breakpoint that does get hit

gritty wind
#

That means diving into d.py's source, and I was hoping to avoid that :P

molten bough
#

ah right, but d.py does a lot of dynamic dispatch

gritty wind
#

I've got it working now btw

#

Had to change the prefix /shrug

molten bough
#

I'm gonna get a paracetamol. /hj

gritty wind
#

Alright, so update

#

the event does fire

#

(bottom right)

#

but it doesn't call the handler for some reason

molten bough
#

Well discord sends the event, it doesn't fire clearly

clever wraith
fallen patrol
gritty wind
#

I can get it to fire now if I don't restart the bot

#

Which means the only thing I have left to do

molten bough
#

I was gonna say d.py's source isn't that bad but it is pretty spaghetti tbf

gritty wind
#

Is to dive into the d.py source again

molten bough
#

I'm still salty about the caching race condition I found that they didn't want to fix in case it broke the entire stack lmao

gritty wind
#

Yeah sounds about right

fallen patrol
#

yeah it fires

gritty wind
#

Ok, breakpoints loaded, next up is seeing what happens

fallen patrol
#

and yes my bot is running in docker because I couldn't figure out how to run metricity outside of docker rn

#

!d discord.Guild.threads

stable mountainBOT
#

property threads: List[discord.threads.Thread]```
A list of threads that you have permission to view.

New in version 2.0.
fallen patrol
#

this is why

molten bough
#

What's why?

fallen patrol
#

that's not all threads

#

that's only active threads

gritty wind
#

So... ?

molten bough
#

Yeah that's fine

fallen patrol
#

wait i might be too tired

#

ignore me

gritty wind
#

It's not getting to the coro await step which calls our code

#

But all the steps before that are the spaghetti dispatching from d.py internals

fallen patrol
gritty wind
#

Which means the function one level up is called about 40 times for this one message

gritty wind
#

I think I'll call that route a dead end, but why is it dispatching for one event listener but not the other

fallen patrol
#

odd

#

calls mine just fine..

#

what's the repro steps?

molten bough
#

archive thread

#

start bot

#

unarchive thread

#

archive it again

gritty wind
#

What, your on_thread_update gets called?

fallen patrol
#

i didn't do the repo steps

gritty wind
#

The second archive in that chain does get called for me

#

It's just the first update after starting the bot does not fire if it's an unarchive

molten bough
#

No, that fires fine

#

I checked that

vale ibex
#

I am going to guess its similar to message deletes, where d.py doesn't fire that event if the thread isn't cached

molten bough
#

that's why it's in the database to begin with

gritty wind
#

Really?

#

Hm, strange

fallen patrol
#

can repro

gritty wind
#

It's not firing at all for me with this

fallen patrol
#

same ^

molten bough
#

I got the sync logging when I did that

#

so it must have fired

gritty wind
#

Is that the one from the startup process maybe?

molten bough
gritty wind
#

Do you see two sync logs up to step 3

molten bough
fallen patrol
#

tries with a fork

gritty wind
#

Strange

molten bough
#

you can see it at the bottom

gritty wind
fallen patrol
molten bough
#

that's what happened when I reported it

#

I rebuilt and restarted, waited for user sync, unarchived, archived

gritty wind
#

The second unarchiving and rearchiving would've meant you'd see that log again

vale ibex
#

Out of interest, could you change guild.threads to await guild.active_threads() in the channel syncer scale?

gritty wind
#

So I think it's only firing once like me and arl are experiencing

vale ibex
#

On mobile now so can't do it myself

molten bough
#

I mean yeah it is firing once

gritty wind
#

sure yeah

molten bough
#

we were already at that equilibrium haha

vale ibex
#

It might be the cache hasn't updated by that point

fallen patrol
vale ibex
#

I am aware

molten bough
#

are you telling me this is probably the same race condition I mentioned earlier

vale ibex
#

Possibly

gritty wind
#

Nope, no change

vale ibex
#

Alright

#

I'm gonna leave this to you guys since I don't have any access to a pc right now lol

gritty wind
#

The syncer isn't being called at all, so that might be expected

molten bough
#

I'll have to go to bed soon anyway haha

fallen patrol
#

hmmm

#

given this, if there's a thread_member update event we could use that....

vale ibex
#

Well it's not crash looping now at least, so it's not an urgent fix

molten bough
#

yeah this doesn't break anything for us aside from data integrity

vale ibex
#

Yea, my command that's up for pr will solve that too

molten bough
#

which would be a pretty big break if this wasn't the initial behaviour I guess haha

fallen patrol
#

!d discord.on_thread_member_join

stable mountainBOT
#

discord.on_thread_member_join(member)``````py

discord.on_thread_member_remove(member)```
Called when a [`ThreadMember`](https://discordpy.readthedocs.io/en/master/api.html#discord.ThreadMember "discord.ThreadMember") leaves or joins a [`Thread`](https://discordpy.readthedocs.io/en/master/api.html#discord.Thread "discord.Thread").

You can get the thread a member belongs in by accessing [`ThreadMember.thread`](https://discordpy.readthedocs.io/en/master/api.html#discord.ThreadMember.thread "discord.ThreadMember.thread").

This requires [`Intents.members`](https://discordpy.readthedocs.io/en/master/api.html#discord.Intents.members "discord.Intents.members") to be enabled.

New in version 2.0.
vale ibex
#

You'll be able to give it two epochs and it'll sync all messages between them

molten bough
#

what does your public stats dashboard look like from all this, by the way?

#

yeah I saw that haha

vale ibex
#

Our usage of threads is minimal so probably no change

fallen patrol
molten bough
#

I mean I already don't know what it looks like

gritty wind
molten bough
#

was wondering for comparison haha

gritty wind
#

But also making it to socket command

#

nvm, it isn't

#

Unless it's GUILD_MEMBERS_CHUNK

vale ibex
fallen patrol
#

yeahh, i should have realised that since I have streaming logs for that

molten bough
#

ah yeah that's what I was wondering

#

huh that's a lot more basic than ours

#

guess this isn't the right place to ask why go basic though haha

clever wraith
#

that page could be replaced with a metabase dashboard tbh

molten bough
#

oh that's not a metabase dashboard

gritty wind
#

You'd most likely need Joe's DMs for that

#

It's uhh

#

I can get you the thing

molten bough
#

nah it's fine

#

we're using metabase already

fallen patrol
#

btw could someone take a look at bot#2022? I've looked at that and need some more opinions

dusky shoreBOT
gritty wind
#

I think we considered metabase, but the resource overhead might've been too high

#

These are just generated on the server occasionally and served statically

molten bough
#

yeah that's probs more sensible at this scale tbf

#

okay, I've got a date with youtube and some headache pills, but thanks for trying to look into this promptly

fallen patrol
molten bough
#

that's just what metabase does at the top of a dashboard

fallen patrol
#

ah ;-;

stable mountainBOT
patent pivot
#

non-zero chance we caused the linode block storage outage in frankfurt today mmLul

#

good job team, keep up the good work

patent pivot
#

nothing we directly did

#

but we opened a few tickets about our block storage problems the other day

#

today a fix was deployed

fallen patrol
#

lmao

patent pivot
fallen patrol
#

fun.

#

more like a "fix"

patent pivot
#

either way we saw some improved volume handling after the skirmish earlier today

#

so that's +++++

#

ideally we have no problems in first place, please linode kubernetes engine MmmHmm

#

had a look at the upgrade we did that moved us to deb 11

#

there was no changelog lol

#

it was just an upgrade offered from kubernetes 1.21 to 1.22

#

which wasn't a release that contained anything major

#

added support for swap memory which was nice

#

but we don't use that lol

molten bough
#

Wonder how annoying I'd be if I asked for voice channels and minutes in metricity as well yeef

#

Also we.. Have a discord experiment that might mean metricity is inaccurate right now, depending on how d.py works

#

Yeah I can see this server doesn't have it

thorny obsidian
#

@summer garden question! When I give epoch something like .epoch 2 weeks, this is part of the output: "Could not parse the following token(s): "

What exactly does that mean? I'm not sure what the ignored_tokens section of code is doing

patent pivot
#

wait

#

lol

#

we'll probably add support once it's GA

molten bough
#

I just sent a DM to Scaleios because discord doesn't want us talking about it outside of the servers it's on

#

Haha

patent pivot
#

need to either patch it in or switch to a fork that supports it

#

oh lol

molten bough
#

Smh Joe lmao

patent pivot
#

I didn't even realise they'd said anything, I heard it through unofficial sources lol

molten bough
#

But yeah we are testing that

vale ibex
#

I mean it's already data mined lol

patent pivot
#

yea

vale ibex
#

I found out about it via reddit

patent pivot
#

either way we'll support it when it's GA

#

and we have a way to support it

molten bough
#

It doesn't seem to actually be breaking d.py

patent pivot
#

it won't

molten bough
#

But it's literally just.. You get message events for voice channels now

#

That's it

patent pivot
#

yeah

patent pivot
#

i guess track start and end of every session a user spends in voice

#

as a row

molten bough
#

That's about all I can think of too

#

But then I'm not sure how you'd calculate based on join/leave on metabase

patent pivot
#

would have to be native sql

molten bough
#

Sadge

fallen patrol
#

gonna leave this here

#

bot#2025 needs one review

dusky shoreBOT
fallen patrol
#

it's a tiny pr

#

it's now merged, thanks

summer garden
# thorny obsidian <@!348828427333140482> question! When I give epoch something like `.epoch 2 week...

Sorry I would have answered sooner but I was baking pizza. A token would just be like a word. They have that phrasing in the dateutil docs so I kept it

Here's some more info I found in the docs just now

... breaks the time string into lexical units (tokens), which
        can be parsed by the parser. Lexical units are demarcated by changes in
        the character set, so any continuous string of letters is considered
        one unit, any continuous string of numbers is considered one unit.
#

thanks for the review, i'll look over it now

#

How do you feel about the wording of The resulting date and time is: ...? I feel there's a better word in place of "resulting"

patent pivot
#

let's see if snekbox works in podman huh

thorny obsidian
summer garden
#

ah I think that's much better

austere hornet
stable mountainBOT
#
You got it!

Your reminder will arrive on <t:1640189502:F>!

clever wraith
clever wraith
#

Sadge

short snow
#

Would appreciate reviews on sir-lancebot#930 and sir-lancebot#745

fallen patrol
#

hmmm not sure i agree this is better

#

my biggest concern is that they aren't fully aligned

austere hornet
dusky shoreBOT
short snow
green oriole
#

You physically can't align them

#

The solution would be to wrap the number in an inline codeblock

#

That way each number takes the same width

solemn kayak
#

.wa seems to be broken for certain inputs

#

.wa 1-tanh^2(x)

#

I’m guessing it’s the ones which take too long to compute

dusky shoreBOT
green oriole
#

.wa what is wolfram

#

... Thanks

cold island
#

.wa short 1+1

dusky shoreBOT
green oriole
#

How weird

#

.source wa

#

...

cold island
#

.wa short 1-tanh^2(x)

dusky shoreBOT
green oriole
#

I really wonder why it would be 403-ing

dim pelican
#

The wolfram response for the floor is made of floor

green oriole
#

Oooooorr we hit the rate limit

#

Which seems quite likely I guess

cold island
#

.wa x^2

dusky shoreBOT
cold island
#

.wa 1-tanh^2(x)

dusky shoreBOT
fallen patrol
cold island
#

.wa 1-(tanh(x))^2

fallen patrol
#

also staff aren't subject to that ratelimit ;-;

#

so like, every time zig runs, he's running it regardless of the ratelimit

cold island
#

It's still failing so that's not it

dusky shoreBOT
cold island
#

I wonder if there are types of API keys or something

green oriole
#

They don't document what rate limits will return

#

So for all we know 403 may be a rate limited exceeded error

#

We should add logging there

cursive relic
stable mountainBOT
#

bot/decorators.py line 177

def respect_role_hierarchy(member_arg: function.Argument) -> t.Callable:```
green oriole
#

So if you have a ban command with the first argument being the user, then it should be 1

#

Or target if it is named target for example, which is a better option tbf

cursive relic
#

all arguments counted self,ctx?

green oriole
#

Good question

#

You should use the name to be honest

cursive relic
#

name of argument instead of number?

green oriole
#

Yes

cursive relic
#

seems like self is not counted, but ctx and so on are

#

and good to know that it works with both, name and position. Thx 😄

stable mountainBOT
ember tree
#

where i can get code of react-nft-challenge

fallen patrol
#

@summer garden why do your commits not link to your github profile?

austere hornet
fallen patrol
#

tldr not sure if there's other flaws with that input style, so implement the original concept in a method so it's easy to change how the input is gathered

#

@gritty wind i have Debian 10 on a machine and it likely has v1 cgroup so I think I can test snekbox there

#

wait how did you test on several different oses?

gritty wind
#

Span up a ton of VPSes and installed snekbox on each

#

The problem I ran into with deb 10 is the docker install script installed a version of compose that’s refusing to work with snekbox

#

Between testing another OS and fixing compose for this one

#

I made a decision

#

I have no doubt it’ll work on whatever we use

gritty wind
#

I think it said it couldn’t recognize the version

#

Something about 1.1 and 1.2 as available options

#

I tried updating the package, but it didn’t do anything

patent pivot
#

interesting

gritty wind
#

If I get more time, I’ll spin up another VPS and check, but we’ll see

gritty wind
#

No more time 🤡

patent pivot
#

u r such a troll omg

fallen patrol
summer garden
fallen patrol
#

my assumption is your configured git email doesn't match what's on your github account

summer garden
#

@fallen patrolthanks for your comment on the pr. I don't see how your suggestion would work though

fallen patrol
#

which pr?

summer garden
#

sir-lancebot#983

dusky shoreBOT
summer garden
#

regarding manually throwing in the ...ago or in...

summer garden
#

The problem is that the dateutil parser will accept something like 6 hours as absolute time (take the current time and set the hour to 6), even though it might've been meant as relative

#

There's no practical way to differentiate between the two beforehand

fallen patrol
#

ahhh....

summer garden
#

I'm not sure I'm making any sense here

fallen patrol
#

you are

#

although I don't like that behavior as absolute time, and think that we should do something to get it... not absolute

#

fwiw I have a particular interest in however we solve this problem, as I'm working on a command for bot which may benefit from what we discover here

summer garden
#

the only thing I can think of is making sure the date string is "full", as in it includes (year), month, day, (time?)

dusky shoreBOT
fallen patrol
#

lemme look at the implementation in a little bit

austere hornet
#

Quick question: is there a specific rule about games on Sir Lancebot that says you can't make games for it that are going to take ___ amount of time or longer?

patent pivot
#

uhhh

#

no specific rule

#

but games that last like

#

upwards of 5-10 minutes are kinda eh

#

we restart the bot enough that it might become quite annoying

austere hornet
#

Ah gotcha, thanks!

fallen patrol
patent pivot
#

we are not storing game state in redis

#

please and thank you

#

love, devops

fallen patrol
#

that reminds me

#

there's a ttt history command

#

and I was thinking, maybe it'd just make sense to remove that?

austere hornet
#

For a second I was thinking there is a history of ttt command and was gonna ask why you wanted to remove that lol

fallen patrol
fallen patrol
#

@hoary haven fwiw I think the patron pr is waiting on the author, it was mostly complete when I reviewed

#

bot#1917

dusky shoreBOT
hoary haven
#

yeah i saw

fallen patrol
#

smh I wish there was a trashcan on those embeds because I want my typos gone..

austere hornet
#

That would be useful

fallen patrol
#

it's part of github command enhancements, which I can't remember the number rn

#

but it's waiting on sir-lancebot#778

dusky shoreBOT
austere hornet
#

June 29

fallen patrol
#

@thorny obsidian so what are your thoughts on lance's error handler vs @stable mountain ? saw your comment and you were talking about having a different behavior for a specific command rather than going to the error handler. They behave differently on the two bots, so should we equalise their behaviour and port the best features of each to the other?

thorny obsidian
#

Indifferent? I'm not a core dev.

I don't think the two bots need to match 1:1 for how they implement things. Anything that we do want standardized will be so in bot-core and then it will just be handled. Unless it's a critical bug or something that needs to be fixed, I'm hesitant to port things over from python bot

fallen patrol
#

then why display the help for the command vs an error?

#

the error message for lance does show how to use the command

thorny obsidian
#

My comment was that what bones has implemented already works fine and I don't see a strong need to change it.

fallen patrol
#

ah

fallen patrol
#

do lance and bot share the same redis ?

#

hmmm

#

yeah i think they do

fallen patrol
#

🥲

#

finally metricity is running

#

ohhhhhhhhhh that's why i had so much trouble

#

...

#

site's docker compose exposes the db on 7777

#

metricity's docker compose puts the db on 5432

obsidian patio
#

If anyone’s available, I’d love to get some reviews on sir-lancebot#988. Shouldn’t be too big of a PR

dusky shoreBOT
short snow
#

no unicode format?

obsidian patio
#

What do you mean?

#

Like \UF29E0? That’s supported

#

The regex I made for parsing it is meant to be pretty generous with what it supports

short snow
#

Yeah, I was talking about unicode format in the resultant embed, which isn't present on it now pithink

#

also we already have emojis on lance, if its possible to use that instead of emoji

#

!pip emojis

stable mountainBOT
obsidian patio
obsidian patio
short snow
#

!pip emoji

stable mountainBOT
short snow
#

one sec

#

ok cool, but if someone wants the format of 👪 in unicode, that won't be possible right?

static canyon
#

It's list[xxx] now

#

Same for tuple, dict, etc.

obsidian patio
obsidian patio
short snow
#

I saw unicode mentioned in the original issue hence pointed it out, 👍

obsidian patio
#

For input, yes

static canyon
#

I may be able to do a full review at a latter date, not sure

obsidian patio
#

Thanks, Tizzy

austere hornet
static canyon
#

It was something else

austere hornet
static canyon
#

It was sir-lancebot#802 @austere hornet @obsidian patio

dusky shoreBOT
austere hornet
#

Ah ok thanks!

#

Who is ventaquil on Github btw? Like what Discord account corresponds to that Github user?

static canyon
#

I might know but not sure so won't say in case it's wrong lemon_sweat

austere hornet
#

Oh ok no worries

gritty wind
#

MorowyKomandos

austere hornet
#

Ahh thanks!

cold island
#

@obtuse arrow I left a review on bot#1940, not sure if you saw

dusky shoreBOT
frigid latch
#

sorry i wasn't clear i wanted to know if there is smth i can contribute to the site

#

ping me next time when replying please

gritty wind
frigid latch
gritty wind
#

The link is in the embed

frigid latch
#

thanks

hoary haven
#

is there a way to get my editor to render these images? working on markdown files for the site

#

![Available help channels](/static/images/content/help_channels/available_channels.png)

hoary haven
#

vs code

brazen charm
hoary haven
#

sure i'll do that as a last resort lol

fallen patrol
#

I have this extension for the previews:
Name: Markdown All in One
Id: yzhang.markdown-all-in-one
Description: All you need to write Markdown (keyboard shortcuts, table of contents, auto preview and more)
Version: 3.4.0
Publisher: Yu Zhang
VS Marketplace Link: https://marketplace.visualstudio.com/items?itemName=yzhang.markdown-all-in-one

hoary haven
#

i've not done any setup btw, just cloned the site repo and started editing

#

yeah i installed that extension

fallen patrol
#

lemme open my site env

hoary haven
brazen charm
#

or I guess you could try making it a file URL, don't think anything will be able to resolve it without changes though

fallen patrol
#

which file is that?

hoary haven
#

pydis_site/apps/content/resources/guides/pydis-guides/help-channel-guide.md

fallen patrol
#

trying to find it in site's structure but not familiar with it

#

oh my god that's so long lmfao

#

oh.

#

odd.... the preview does not show up on my end either

hoary haven
#

yeah i'll go with numerlor's option haha. easier to "read" when all the images show up in preview

fallen patrol
#

sorry there's not a better solution

#

wait--

#

you could run the site, and look at the live preview in browser

#

docker-compose up & then open 127.0.0.1:8000

hoary haven
#

i have no experience with docker and won't be able to install it on this work machine anyway. one day though. thanks BlushFluent

gritty wind
#

If you have access to pip and python

#

You can get the base requirements for docs by hand

#

And generate a static preview

#

Or if your PR you’ll automatically get a preview from actions

hoary haven
#

i do have pip and python

gritty wind
#

Try “pip install poetry && poetry install” in the site repo

#

That’ll give you everything you need

#

If you run “poetry run task static”, it’ll do all you need

hoary haven
#

i am so afraid of the word poetry. will let you know how it goes

gritty wind
#

You can install things by hand too

#

Without poetry

hoary haven
#

i don't have the latest pwsh so i replaced && with ; and it worked it seems

#

made the virtualenv in my appdata/local dir, can't make it in the project dir i think i've heard with poetry.. is that right?

gritty wind
#

It should be fine actually

#

Though poetry can create the env for you

#

If you want to use your own, make sure to activate it before running poetry install

hoary haven
#

ok think i got it

outer oasis
brazen charm
#

doesn't it use %userprofile%/.virtualenvs by default?

gritty wind
#

App data for some reason /shrug

fallen patrol
cold island
#

!otn a mina the english teacher

stable mountainBOT
#

:ok_hand: Added mina-the-english-teacher to the names list.

austere hornet
#

Good one

hoary haven
#

yuck english dv_pandaSadOwO

stable mountainBOT
#
It has arrived!

Here's your reminder: here we go again smh
[Jump back to when you created the reminder](#dev-contrib message)

austere hornet
#

@fallen patrol @summer garden Have you seen my latest comments on sir-lancebot#985?

dusky shoreBOT
summer garden
#

I don't think the issue with a 9x9 board is taking up the channel. My main concern was how long the game would last and also the tediousness of inputting numbers by row and column

#

I just don't think it's well suited to be played in discord

#

Sorry I should have replied sooner. It slipped my mind after I read the pr comment

#

And I don't necessarily agree with immediately telling the player if the number they inputted is right or wrong. I feel like that spoils it to some extent

#

It would make people more likely to guess, rather than exercise logic

austere hornet
austere hornet
fallen patrol
austere hornet
summer garden
austere hornet
#

Unless I'm misunderstanding

summer garden
#

*two or more possible spots, of which only one is correct

hoary haven
#

you can't, but it spoils it if you're told whether your move is correct or not each time you make a move

tawdry vapor
#

There could be multiple valid options, but later when more of the puzzle it solved it turns out that your choice was incorrect

austere hornet
hoary haven
#

it's the whole part of the puzzle and the fun! especially on a reduced board size, you shouldn't spoil it imo

tawdry vapor
#

It's part of the challenge to know ahead of time which choice is correct, without having the rest of the cells filled out already to show you.

fallen patrol
#

^

#

originally, sudoku (and still now) was/is played on paper, which never had checking lol

hoary haven
#

btw, have you thought of how you're going to allow for users to edit their entries? (change or remove)

austere hornet
fallen patrol
#

presumably just use the same input method as the initial input

#

oh wait

#

hmmm

austere hornet
summer garden
#

I propose that either columns be named alphabetically and rows numerically or vice versa. This would remove some confusion in placing your number in the wrong spot. For example .sudoku B6 8. Removing a square might be something like .sudoku B6 X

#

I don't know if other people do this, but I always get my axes mixed up 🙄

austere hornet
austere hornet
#

I think Y axes should be labeled with letters and X with numbers (it's like chess if you know how to play that)

summer garden
#

I still think 9x9 is rather large. 4x4 is admittedly very easy. If we were to meet in the middle, that would be 6x6. The only thing about that is that the grids are rectangular not square

austere hornet
austere hornet
#

Btw, the 8 was just an example of a number for the board, right? Just checking

summer garden
#

yeah that's right

hoary haven
#

also, this makes sense to do as a text based game imo.. not something with pillow

summer garden
#

I know we're quite deep into the sudoku rabbit hole, but another alternative is kenken - a similar "grid" game. The rules are obviously different, but it would allow us to play on a smaller board, (as small as 3x3) without it becoming too easy. The rules are here if you want to give it a quick read http://www.kenkenpuzzle.com/howto/solve

austere hornet
summer garden
#

if not, I'm still down for a 6x6 sudoku

austere hornet
summer garden
#

I was trying to find the name of this back when this sudoku idea first came up. Apparently it's huge in japan - the new yorker has a nice mini documentary about it

austere hornet
summer garden
#

The only issue would be the formatting into text, as kenken requires the little subscript "objective" in the corner of each box

austere hornet
austere hornet
brisk brook
#

Yeah that's the code that interacts with Snekbox

austere hornet
#

Does anyone know where I could find the code on Snekbox that adds a trashcan reaction to the eval message from the bot that allows the command invoker to delete that message?

#

I'm referring to this:

stable mountainBOT
#

bot/exts/utils/snekbox.py line 222

scheduling.create_task(wait_for_deletion(response, (ctx.author.id,)), event_loop=self.bot.loop)```
stable mountainBOT
#

bot/exts/utils/snekbox.py lines 214 to 222

filter_cog = self.bot.get_cog("Filtering")
filter_triggered = False
if filter_cog:
    filter_triggered = await filter_cog.filter_eval(msg, ctx.message)
if filter_triggered:
    response = await ctx.send("Attempt to circumvent filter detected. Moderator team has been alerted.")
else:
    response = await ctx.send(msg)
scheduling.create_task(wait_for_deletion(response, (ctx.author.id,)), event_loop=self.bot.loop)```
austere hornet
#

This isn't the right channel for that question, I think that question goes in #career-advice

fallen patrol
#

the important thing is actually the source of wait_for_deletion

#

what are you trying to do?

austere hornet
# fallen patrol what are you trying to do?

So if you recall a few days ago, you made a typo when you were trying to use the GitHub Issue/PR Link command and you kept typing the wrong number or something I think and that gave me the idea of having a trashcan feature just like the eval command. I'm in the process of writing an issue now

#

I was just trying to see how I should implement it

fallen patrol
#

sir-lancebot#968

dusky shoreBOT
austere hornet
#

Ohh

fallen patrol
#

i have a slew of enhancements to make to that command once sir-lancebot#778 is merged

dusky shoreBOT
austere hornet
#

Ahh gotcha

#

Ok nvm then

fallen patrol
fallen patrol
austere hornet
fallen patrol
#

@austere hornet now that we've bikeshedded that much...

To avoid spam of the "Hint" button, I'm going to record the last time the button is pressed using the built-in time module in Python and count 3 minutes from that time and after that time elapses, allow the user to click that button again. Then the process repeats.

you can edit the message and view to enable/disable the buttons btw

#

!d discord.ui.Button.disabled

stable mountainBOT
stable mountainBOT
#
Alright.

Your reminder will arrive on <t:1640363494:F>!

gray hound
#

Hello!
I found a small typo in the tools section of the website (pythondiscord.com)
I think it is more of a font issue than a typo.
The link says: our met a repo instead of our meta repo.
Screenshot attached.

gray hound
#

yeah sure

tawdry vapor
#

Which browser are you using?

fallen patrol
gray hound
#

Alright.
Thanks for looking into it though.

fallen patrol
gray hound
#

Brave

fallen patrol
#

try looking the shields, perhaps they're blocking the font we use from loading

gray hound
#

No. Still the same result.

tawdry vapor
#

Can you right click on the link and select inspect, then go to the "computed" tab on the right?

#

At the bottom it should then show the name of the rendered font

gray hound
#

It's Roboto

#

For me

tawdry vapor
#

Alright. That is actually one of the listed fonts in the CSS that it attempts to use. I don't have it on my system though so I can't see what it'd look like for me.

#

One would assume that if it's explicitly requesting that font then it should look okay.

gray hound
#

Guess it's alright then.

#

Here's the page's preview I'm getting.

tawdry vapor
#

The kerning is all messed up but I don't know why

#

Unsure if it's an issue on your end or on the site's end.

#

It's especially bad for the f and t characters

fallen patrol
gray hound
#

If it's my side, how can I know? How to fix?

#

Sorry for late response.

tawdry vapor
#

I'm unsure, sorry

gray hound
#

It's okay.
Thanks for letting me know about the actual problem, though. I really appreciate it.

frigid latch
#

the site requires postgres, or is there a docker setup?

#

coz one without docker looks complex

tawdry vapor
#

Yes there is a Docker set up documented in the setup guide.

fallen patrol
frigid latch
static canyon
#

@obsidian patio have left a slightly more in-depth review on sir-lancebot#988

dusky shoreBOT
obsidian patio
#

@static canyon thanks!

clever wraith
#

Uhm in the form you guys gave, I see infinite loading. is that a bug or something?

#

oh i guess that's it.
Anyways, it would be better to have client side error i think?
Steps to regenerate would be just entering the country name and hit enter.

#

also UI is a bit confusing which does not represent that we NEED to enter discord info.
I mean I found out that I NEED to log in after I've seen the error.

patent pivot
#

yeah, that's something that we will improve

#

discord data is a flag on the form like "collect data" or "don't collect data", it's not a field in the sense that shipping is and so it's handled a bit differently.

#

the frontend should reject submission until the data is collected, and the backend is already doing that validation (hence why frontend is getting an error from backend)

cedar frigate
#

is opening gh issues on the bot repo the preferred way to request something?

magic arch
cold island
#

Yes you can just open an issue. You can also discuss it here first if you want

cedar frigate
#

thanks, it isn't fully formed yet lemon_swag

stable mountainBOT
# austere hornet !remind 12H
It has arrived!

Here's your reminder: @austere hornet now that we've bikeshedded that much...

To avoid spam of the "Hint" button, I'm going to record the last time the button is pressed using the built-in time module in Python and count 3 minutes from that time and after that time elapses, allow the user to click that button again. Then the process repeats.

you can edit the message and view to enable/disable the buttons btw
[Jump back to when you created the reminder](#dev-contrib message)

austere hornet
fallen patrol
#

hm?

austere hornet
#

Well you said "you can edit the message", not sure what you mean by that

austere hornet
#

@fallen patrol ^

fallen patrol
#

!d discord.Message.edit

stable mountainBOT
#

await edit(content=..., embed=..., embeds=..., attachments=..., suppress=..., delete_after=None, allowed_mentions=..., view=...)```
This function is a [*coroutine*](https://docs.python.org/3/library/asyncio-task.html#coroutine).

Edits the message.

The content must be able to be transformed into a string via `str(content)`.

Changed in version 1.3: The `suppress` keyword-only parameter was added.
fallen patrol
#

you can edit the message and disable the buttons, that was all

austere hornet
fallen patrol
#

cool 👍

#

I'm (mostly) afk from now until the 27th or so

#

@short snow yes you will get your review smh

patent pivot
#

just fixed this

#

now enter won't submit unless you've authorised with discord, if you haven't it'll scroll down until the "discord login" button is visible

austere hornet
#

Hey @patent pivot, question for you. I'm in the process of writing an issue on Lance for another game called Kenken. (This was suggested by bones, see #dev-contrib message). I was DM'ing him just now and he thinks I should make Sudoku and Kenken in one cog. However, I don't think that is a good idea since they are 2 separate games. What do you think?

patent pivot
#

should be a separate cog probably, not sure

austere hornet
hoary haven
#

and i'm now on mac, and have pyenv installed

vale ibex
#

yup, that should cover it

#

Running on docker is still recommended though

hoary haven
#

do you guys just install all pydis dependencies on 1 virtual environment? 1 virtual environment for each repo?

fallen patrol
#

aside from that's how prod works, it's just good practice to not share venvs between projects

hoary haven
#

and poetry is a dependency manager, and doesn't create environments.. correct? so i should use something like pipenv in conjunction with it

fallen patrol
#

it does create venvs, actually

vale ibex
#

poetry creates virtual environments, yea

fallen patrol
#

however I prefer to create my own venv and it automatically uses that

#

python3.9 -m virtualenv .venv

#

poetry install

hoary haven
#

mk

fallen patrol
#

then I set the local venv in my editor config and never have to think about it again

fallen patrol
vale ibex
#

interesting, I haven't ran into any issues with that specifically

#

You seem to hit all the issues 😅

fallen patrol
#

yeah pretty much

#

if poetry has a bug I will find it whether I want to or not

#

and I have

#

in other news I really only use poetry for dependency management and pep 517.

hoary haven
#

ok i think i installed poetry in multiple places unintentionally but i think i got it lol

fallen patrol
#

lol I use pipx

#

so one copy of poetry and that's it :)

#

much better than their installer

brazen charm
#

I just did a normal pip install, never had any issues

#

apart from when they broke their cache lookups

fallen patrol
#

but that [using pip] is installed to site packages, so by using pipx it's in its own little private corner, er venv

brazen charm
#

not like I use the system python for anything beyond poetry and pipenv

hoary haven
#

it failed to install Installing psycopg2-binary (2.8.6): Failed

#

everything else seems to be have installed fine

fallen patrol
#

what os

gritty wind
#

If you have Postgres locally, that’ll possibly help you work past it, but ideally it should work

vale ibex
#

seems like an m1 mac issue

fallen patrol
#

ahhh, yeah

#

sigh

#

well

#

given

#

you don't need that

#

okay so first try poetry update and then poetry install again

gritty wind
#

Poetry update will fuck the lock file

fallen patrol
#

yeah that's the goal

#

if there's an updated version then we can switch to that

gritty wind
#

There are much newer versions

#

But given that this is not appearing in the issue tracker

#

I don’t think it’s version specific

#

Have you tired the provided troubleshooting steps in the error

fallen patrol
#

!pip psycopg2-binary

stable mountainBOT
gritty wind
#

Actually you know what

#

It doesn’t have m1 images at all

#

You need to build from source

#

And the instructions say building from source requires Pg

outer oasis
#

Yep, it will probably be able to build from source if PG is installed

fallen patrol
#

so the next best thing is don't install it

gritty wind
#

It really isn’t, we haven’t tried to install it

fallen patrol
#

IIRC Mina was only trying to view static content

fallen patrol
gritty wind
#

The thing is arl you still need all imports to succeed

#

Even if doing static builds

#

We still import everything

hoary haven
#

erm while working on editing site markdown files i wanted the static images to render basically

fallen patrol
gritty wind
#

Tbh, I don’t think it’s worth it

#

Saying you need to install project deps to use the project is not really

#

Much of a stretch

vale ibex
#

I mean you could just install docker

#

and run it via that

#

you just won't get pre-commit stuff then

fallen patrol
#

Mina can't install docker on work machine

gritty wind
#

I think she said she’s home

#

Yeah

fallen patrol
#

oh

#

lol

#

@hoary haven just docker compose up it then :)

hoary haven
#

yeah at home now

#

is the pre-commit stuff the linting stuff though?

vale ibex
#

That --platform=linux/amd64 arg I added coming in use lol

fallen patrol
#

and if you do want the dev dependencies for pre commit you can export what poetry installs, then delete the postgres dependencies

hoary haven
#

bc that's like the one thing i'd like lol

fallen patrol
#
poetry export --without-hashes > requirements.txt
gritty wind
#

Yeah that’s the linting stuff

fallen patrol
#

finally while in the venv, pip install those dependencies and finally pre-commit install --install-hooks

#

will get you the linting deps :)

fallen patrol
#

I have enough experience with poetry to basically not use it for everything it does 🥲

gritty wind
#

Honestly just get windows

vale ibex
#

@hoary haven if you follow this answer, it should get pg_config installed https://stackoverflow.com/a/21080707

gritty wind
#

Despite what everyone says

#

It works better than everything else

hoary haven
#

lolol really?

fallen patrol
vale ibex
#

yup, windows is really nice

hoary haven
gritty wind
#

Programming

#

I’ve got wsl, and I can’t think of anything I can’t do

#

Nothing breaks either

#

That Microsoft quality

hoary haven
#

haha i hope to be proficient at using both since i use both regularly

#

oh i haven't tried wsl though

fallen patrol
#

check and mate

gritty wind
#

Who turns off their PC wtf

fallen patrol
#

afk

gritty wind
#

Actually you don’t even need to turn windows off, it’ll turn itself off to update

vale ibex
#

not me 🙂

gritty wind
#

Perfect lol

hoary haven
#

alright. i don't really know what i did, but i basically ignored the psycopg2 stuff and just did docker-compose up and 127.0.0.1:8000 works shrug

#

it told me to use 0.0.0.0:8000 though, which doesn't work

gritty wind
#

Docker installs it’s own dependencies, which is why it’s usually the goto option

hoary haven
#

so i could have skipped poetry altogether?

vale ibex
#

Docker allows you to run the project without running anything

#

however, in-editor code completion and pre-commit linting requires you to have dependancies installed locally

fallen patrol
#

if you use docker it uses poetry to build the image

hoary haven
#

ok

fallen patrol
#

but unless you use vscode or can set up your editor to code in a docker container... you would need to install the dependencies in a local venv anyways

#

did you ever get the pre commit dependencies installed?

hoary haven
#

poetry run task precommit i did this earlier and it seems to have worked

fallen patrol
#

did you install the dependencies?

hoary haven
#

poetry install ? yeah i did that first and besides the pysocpg2 everything installed fine

fallen patrol
#

hm, did everything else get installed?

#

I kinda doubt it...

hoary haven
#

it told me it did lol. how do i check?

fallen patrol
#

any differences, weren't installed

#

your best bet is to just take the output of that poetry export, remove the postgres deps, and pip install that

hoary haven
#

so that's what i'm supposed to have? not what i actually have installed?

#

yeah looks like it

fallen patrol
#

yeah, poetry show doesn't show you what is installed AFAIK

hoary haven
#

mk yeah not everything was installed. none of the flake8 stuff was

fallen patrol
#

the important part ;-;

#

legit you could get away with a global pre-commit and all of the flake8 stuff for linting in the poetry env, nothing else needed

hoary haven
fallen patrol
#

oh f I forgot

hoary haven
#

when i pip list tbh it looks like i have everything, flake8 stuff and pre-commit

hoary haven
tawdry vapor
#

Poetry installs development dependencies by default, unlike pipenv.

#

Not sure why the dev flag made a difference

sleek steppe
fallen patrol
#

^

fallen patrol
fallen patrol
#

@brisk brook you occasionally use the integrated vscode extension to review and leave comments on github, don't you lol

brisk brook
#

I tried it but hated it, what makes you think that?

#

Is it something I do that you can do in that?

fallen patrol
#

this #dev-log message

it escaped the worker which filters all of these events. I've only known it to escape when I submit a comment on a pull from the extension

#

comment on github? gets caught no problem
comment on the extension? it escapes

brisk brook
#

Caught refers to it not being sent yeah?

fallen patrol
#

yeah

brisk brook
#

What I do is that I go through the whole diff and make comments (sometimes only one, like here). Then in the top right I select "Review changes" and pick "Comment"

fallen patrol
#

hmm I wonder if that contributes

brisk brook
#

How do I authenticate with the site API?

brazen charm
#

authorization token header

brisk brook
#

Even when setting Authorization to suitable-for-development-only (copied from the site page after being set up in an .env file) I get: ```json
{
"detail": "Authentication credentials were not provided."
}

brazen charm
#

the api key should be badbot something

brisk brook
brazen charm
#

so Authorization: Token badbotsomething

#

if you have the bot working then it's in the .env or env vars

brisk brook
#

Ah, no I am just running site standalone

brazen charm
#

Just to get the key; it should also be somewhere in the guides

brisk brook
cold island
#

First bullet

brazen charm
#

the suitable-for-development-only is for something different

#

You're also missing the Token auth type

brisk brook
short snow
#

also merry Christmas ducky_santa guys

austere hornet
fallen patrol
#

nextcord may be going zap

patent pivot
#

?

#

that's not really relevant to this channel

cold island
#

Is there a way to get the bot instance without passing it around?

gritty wind
#

Import it from bot

#

What are you doing anyways

cold island
#

filters

#

Writing the infraction logic

tawdry vapor
#

bot.instance

#

@cold island speaking of filters, what do you think about stripping spaces from text before applying the URL regex? Would've prevent the raid the other day, probably.

cold island
#

I wasn't around for that raid, what was in it?

austere hornet
tawdry vapor
#

A discord invite link that had random amount of spaces between characters

cold island
#

Oh strip in that sense

tawdry vapor
#

Of coruse there'd still be other circumventions but might as well prevent this easy one

cold island
#

Yeah I'm trying to think if it can cause falses

tawdry vapor
#

I think URLs are generally pretty distinct, especially if the scheme is included

#

But if we have a filter just for bad.com then it could be a false positive for imnotbad.com

#

Wait that came out wrong

#

I think it would be like we have a filter for imreallybad.com and it would pick up im really bad.com

#

but less likely to be a false positive if it were written as http:// im really bad.com

#

Don't remember if the raid included a scheme in the links

cold island
#

Rather than URL it could be done for the invites filter

#

Would be much safer

tawdry vapor
#

Yeah, probably

gritty wind
#

Hm don’t we validate scheme too anyway

#

Also mark wow

#

Alright, good to know

cold island
#

For general URLs there's a PR (or should be) that moves away from looking for schemes

tawdry vapor
gritty wind
#

I didn’t know you were bad smh

tawdry vapor
#

🙄

fallen patrol
cold island
#

lol please stop

gritty wind
#

What are you posting

static canyon
#

Arl pls stop

gritty wind
#

I have a feeling you’re pinging the mods

fallen patrol
#

can someone repost what I'm saying ;-;

static canyon
static canyon
fallen patrol
#

also sorry I didn't realise invites mentioned mods ;-; since the bot catches them lol

fallen patrol
static canyon
gritty wind
#

I don’t have the mod role if you’ll notice

#

Most things do lol, mostly the point

#

Until zig is done at least

#

One day

fallen patrol
static canyon
#

That's probably a good rule to go by

#

(sorry if that comes off overly harsh, can't really tell)

fallen patrol
#

ye

#

afk

tawdry vapor
#

I think maybe what could work for invites is if the text is first searched as-is, and if nothing is found, strip spaces and search again. On this second try, if something that looks like an invite is found, but can't be parsed further, err on the side of caution and remove it.

fallen patrol
#

however, what about with the above vs the above?

#

(the ones i can't send)

tawdry vapor
#

It would evaluate the .gg/python discord as .gg/python, see that it's a valid invite, and stop.

#

If it evaluated .gg/python discord and .gg/python was not allowed/valid, then it would strip spaces, check again, detect .gg/pythondiscord, see that's not whitelisted, and remove it.

hoary haven
#

if you want a sample of one of the raid messages from yesterday: d is cor d. g g/h D2 Cm Jh tzj JOIN NOW! | erk7d

hoary haven
#

that part differed in each message, to avoid filters looking for duplicate messages i presume

fallen patrol
#

ahhh

cold island
tawdry vapor
#

You're right, i was overthinking it

fallen patrol
#

perhaps a better one would be dpy or ~3 characters

cold island
#

Okay, 6 hours of writing filters is enough, time to sleep

vale ibex
#

So I realised I never got around to writing this for whatever reason, so I've spent the last two hours or so getting a dev env setup on my laptop lol

#

sir-lancebot#991

dusky shoreBOT
austere hornet
#

Quick question about the Github Issue/PR Link feature on Lance. Was there any reason @dusky shore was chosen over @stable mountain for this feature? I feel like this feature would be better on @stable mountain .

gritty wind
#

These sort of fun feature usually go on lance, while the more crucial features go on python

gritty wind
#

It helps keep python more stable while reducing the review requirement on non-critical stuff

#

But there are exceptions sometimes

austere hornet
thorny obsidian
vale ibex
#

yup 😄

thorny obsidian
#

Sweet, I'll take a look now then

vale ibex
#

I've also had a lot of baileys today so excuse simple mistakes lol

thorny obsidian
#

Also Merry Christmas!

vale ibex
#

and to you! Everyone is sleeping so I thought I'd be productive lol

thorny obsidian
#

Haha, I'm 2 wine glasses deep trying to deal with a racist and misogynistic uncle, so I'm probably same level

vale ibex
#

yikes

#

glad to provide some escape then lol

thorny obsidian
#

oh! Is the role actually ready yet?

vale ibex
#

Yea

#

Given it to myself

#

Just need to update the tree to the pink version

thorny obsidian
#

Can I bug you for the sleigh that Fronto posted?

vale ibex
#

want that to be the icon?

thorny obsidian
#

to at least try it out, it's very relevant to AoC and cute

vale ibex
#

this?

thorny obsidian
#

yeah!

vale ibex
#

how's it look?

thorny obsidian
#

oh that's actually so cute (cc: @trail pilot)

trail pilot
#

Ooh, it looks awesome

thorny obsidian
#

I like it, but unsure if someone who didn't know what the icon was would recognize it. Although I'm willing to take that risk

trail pilot
#

the details are a bit fuzzy around the edges but otherwise I think it looks like a sleigh

#

but tbh, I could see people mistaking it to be the Docker logo

#

like some weird, modified version of the Docker logo

vale ibex
#

hah

thorny obsidian
#

I'm also fine with the tree + star inside of it

clever wraith
#

It is very small on mobile

#

It could be a bit hard to guess what it is

trail pilot
#

the tree looks better tbh

#

it's more distinct

vale ibex
#

This is the tree with star

clever wraith
#

I also prefer the tree

vale ibex
#

star with snowflake

#

this one isn't transparent, but that can be fixed

clever wraith
#

Nah, can hardly see the snowflake

thorny obsidian
#

That snowflake is hard to see. I say let's stick with the tree + star

vale ibex
#

cool

trail pilot
#

Also, the role is being given out in Jan. right?

#

or will it be given out by today

vale ibex
#

it's being given out as soon as the PR is merged 😄

trail pilot
#

Got it

thorny obsidian
#

Probably whenever it gets merged. I'll make an announcement when it happens to let folks know

fallen patrol
vale ibex
#

I'm going to join the rest and head to bed, I'll take a look at PR comments tomorrow 🙂

gritty wind
#

The answer is: randomly

fallen patrol
#

although I've asked before and got an answer about why not to merge them, just forgot it, so nvm

fallen patrol
#

if it lands on its side somehow we put it on @radiant merlin

clever wraith
#

I am a bit too lazy to do an actual review as it would require me to setup a test server

#

Code wise it looks good

#

Except those two comments

fallen patrol
clever wraith
#

lol thanks, I'll have to see about that tomorrow

#

Going to slep rn

fallen patrol
#

cc @short snow ^

patent pivot
#

good evening gamers

#

anyone want a review for christmas

thorny obsidian
#

lmao thank you @patent pivot

patent pivot
#

ur so welcome

static canyon
static canyon
#

Hmm apparently I never got around to fixing tests on 2013, but you can still review lemon_sweat

#

In fact, I'll do that now