#dev-log

1 messages ยท Page 22 of 1

regal archBOT
regal archBOT
#
[python-discord/snekbox] New branch created: invalid_bytes_in_filename
regal archBOT
#
jb3
[python-discord/metricity] New branch created: jb3/dep-bumps
#
jb3
[python-discord/metricity] branch deleted: jb3/dep-bumps
regal archBOT
#
jb3
[python-discord/metricity] New branch created: jb3/deleted-channel-column
#
jb3
[python-discord/metricity] branch deleted: jb3/deleted-channel-column
#
jb3
[python-discord/metricity] New tag created: v2.5.0
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
#
jb3
[python-discord/metricity] New branch created: jb3/deleted-category-attribute
#
jb3
[python-discord/metricity] branch deleted: jb3/deleted-category-attribute
#
jb3
[python-discord/metricity] New tag created: v2.5.1
regal archBOT
regal archBOT
odd spireBOT
odd spireBOT
regal archBOT
regal archBOT
regal archBOT
regal archBOT
#

Yeah some setting(s) needs to be added here.

I'm wondering what the correct approach here is: We could have a setting for whether to DM the message or send it in the public channel (in which case it might make sense to change the names of dm_content and dm_embed since it wouldn't necessarily be a DM anymore), or we could add a setting that allows sending the message publicly as a fallback if sending the DM fails (usually because they have DMs off).

thin oysterBOT
#
Sir Robin

Connected!

night lilyBOT
#
Sir Lancebot

Connected!

regal archBOT
oak estuaryBOT
regal archBOT
night lilyBOT
#
Sir Lancebot

Connected!

odd spireBOT
regal archBOT
regal archBOT
#
[python-discord/snekbox] branch deleted: invalid_bytes_in_filename
#
jb3
[python-discord/snekbox] New branch created: jb3/pooch
#
jb3
[python-discord/snekbox] branch deleted: jb3/pooch
#
jb3
[python-discord/snekbox] branch deleted: prctl-reparenting
night lilyBOT
#
Sir Lancebot

Connected!

regal archBOT
#
jb3
[python-discord/olli] New tag created: v2.0.0
regal archBOT
regal archBOT
#
jb3
[python-discord/king-arthur] New branch created: jb3/python-3.12
regal archBOT
#
jb3
[python-discord/king-arthur] branch deleted: jb3/python-3.12
odd spireBOT
odd spireBOT
odd spireBOT
odd spireBOT
odd spireBOT
odd spireBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
night lilyBOT
#
Sir Lancebot

Connected!

odd spireBOT
odd spireBOT
odd spireBOT
odd spireBOT
regal archBOT
regal archBOT
regal archBOT
odd spireBOT
oak estuaryBOT
odd spireBOT
regal archBOT
odd spireBOT
oak estuaryBOT
odd spireBOT
regal archBOT
#

We don't currently have any tag groups, as far as I know (#2423), but the /tag command docstring references it and it can perhaps be made clearer (or more concisely describe) how tags in tag groups can be invoked.

Proposed by @RohanJnr in #2583:

We need better help message to tell users on how to use tags from a group. Currently, the syntax to view a tag from a group is /tag name: , this has to be mentioned in the tag help message.

![image](https://github.com/python-discord/bo...

#

An update on the points proposed in the issue:

  • [x] Empty bullet (#3011)
  • [x] "Did you mean ..." (#3011)
  • [x] Tag embed footer (#2987)
  • [ ] Extra aliases in tag suggestions

@RohanJnr, regarding improving the docs for /tag -- although we don't actually have any tag groups yet, I agree it could perhaps be made clearer. I've opened a separate issue for it since this is unrelated to the /tag output in this issue. (#3014)

Now it looks like the aliases cluttering already have an...

regal archBOT
regal archBOT
night lilyBOT
#
Sir Lancebot

Connected!

regal archBOT
night lilyBOT
#
Sir Lancebot

Connected!

odd spireBOT
regal archBOT
#
[python-discord/sir-lancebot] New branch created: remove-sentry-experiment
odd spireBOT
regal archBOT
#
[python-discord/sir-lancebot] branch deleted: remove-sentry-experiment
night lilyBOT
#
Sir Lancebot

Connected!

odd spireBOT
night lilyBOT
#
Sir Lancebot

Connected!

odd spireBOT
oak estuaryBOT
regal archBOT
odd spireBOT
oak estuaryBOT
regal archBOT
oak estuaryBOT
odd spireBOT
regal archBOT
#

I'm not sure. One potential reason I can think of is that that normalizing URLs to lowercase might lead to loss of distinction between case-sensitive URLs (example.com/aBcD vs example.com/abcd) so we will not be able to visit the website ourselves later (, perhaps, for verification reasons). Although I guess we could search for the message with the original link but that would be tedious.

regal archBOT
#

The former.

This change fixe the first bug I've mentioned in the PR description.
Invite links of the form https://discord.gg/aBcDeFgH will be present in content_list twice. Once as an invite filter and once as a domain filter (..and in this order from my testing. This is why we continue to the next iteration of the loop if it's domain filter and the content of the filter matches the pattern of a guild invite.

Before this change, at the point where we encounter continue, `conte...

#

The former.

This change fixe the first bug I've mentioned in the PR description.
Invite links of the form https://discord.gg/aBcDeFgH will be present in content_list twice. Once as an invite filter and once as a domain filter (..and in this order from my testing. This is why we continue to the next iteration of the loop if it's domain filter and the content of the filter matches the pattern of a guild invite.

Before this change, at the point where we encounter continue, `conte...

regal archBOT
regal archBOT
#

Currently a reminder will be ignored+deleted if the bot cannot get the channel it was meant to reply in:
https://github.com/python-discord/bot/blob/324cb65b5e2fbc52cb494f02a11dc40e56f0a5cb/bot/exts/utils/reminders.py#L112-L124

This could happen if the remind command was run in a thread, or a channel that was deleted.

There are a couple of options here:

  • Don't allow the command in threads, or always send the reminder to e.g. #bot-commands
  • Send the reminder to e.g. #bot-commands...
oak estuaryBOT
oak estuaryBOT
regal archBOT
night lilyBOT
#
Sir Lancebot

Connected!

thin oysterBOT
#
Sir Robin

Connected!

regal archBOT
night lilyBOT
#
Sir Lancebot

Connected!

oak estuaryBOT
thin oysterBOT
#
Sir Robin

Connected!

regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
oak estuaryBOT
regal archBOT
odd spireBOT
regal archBOT
thin oysterBOT
#
Sir Robin

Connected!

regal archBOT
odd spireBOT
odd spireBOT
regal archBOT
oak estuaryBOT
regal archBOT
night lilyBOT
#
Sir Lancebot

Connected!

regal archBOT
odd spireBOT
regal archBOT
#
[python-discord/site] New branch created: netcup-link-add-ref
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
oak estuaryBOT
night lilyBOT
#
Sir Lancebot

Connected!

oak estuaryBOT
thin oysterBOT
#
Sir Robin

Connected!

regal archBOT
thin oysterBOT
#
Sir Robin

Connected!

oak estuaryBOT
night lilyBOT
#
Sir Lancebot

Connected!

odd spireBOT
regal archBOT
#

Sentry Issue: SIR-LANCEBOT-BV

TypeError: can't compare offset-naive and offset-aware datetimes
  File "bot/exts/utilities/emoji.py", line 111, in info_command
    **Created:** {time_since(emoji.created_at.replace(tzinfo=None), precision="hours")}
  File "bot/utils/time.py", line 79, in time_since
    delta = abs(relativedelta(now, past_datetime))

Unhandled command error: can't compare offset-naive and off...
odd spireBOT
regal archBOT
regal archBOT
#

Personally I think I would be in favour of the second option, defining event files using markdown/YAML.

A few benefits I think this has over the first option:

  • It's a lot simpler to implement and maintain.
  • I think Discord commands could end up being a bit fiddly to use and it could be hard to remember how to do different things. With GitHub it should be more obvious, just add a new file, using a template/existing event for reference. It would also be much easier to do things like mak...
odd spireBOT
oak estuaryBOT
regal archBOT
#

I think that the current type isn't very useful ,str | int | list[int] makes the usages below technically incorrect since whenever accessing a value they should handle it being any of those types.

I would be find with any of these, since they're all "correct", it just depends what you consider in-scope for the PR given our typing elsewhere with infractions isn't great either afaik:

  1. list[dict[str, typing.Any]]
  2. Use a TypedDict
  3. Use a Pydantic model
regal archBOT
regal archBOT
regal archBOT
#
[python-discord/bot] New branch created: fix-watchchannel-bugs
odd spireBOT
regal archBOT
regal archBOT
#

7569771 Fix case sensitivity bug in phishing button - vivekashok1221
3996fa6 Update regex to discard trailing ')' and lowerc... - vivekashok1221
ea10480 Skip adding phishing button if user already banned - vivekashok1221
69bc65b Use regex to detect Discord invite link - vivekashok1221
dce89a9 Update comment for clarity on skipping adding o... - vivekashok1221

#
[python-discord/bot] branch deleted: vivek/fix-phishing-button
odd spireBOT
regal archBOT
#
[python-discord/bot] New branch created: feat/tag-list-iterate-and-remove-gotcha
oak estuaryBOT
regal archBOT
odd spireBOT
regal archBOT
#
[python-discord/site] branch deleted: netcup-link-add-ref
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
#

Technically it's not the for loop tracking it, it's the list's iterator. I don't think this really matters, but I also think it's not too hard to word it to avoid suggesting that. I'm also not sure how much "pointer" will mean to someone without knowledge in a language like C. Maybe something along the lines of this would be clearer?

While iterating with a for loop, an index tracks the current position in the list. If the list is modified, this index may no longer refer to the...
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
#

Description

We'd like to evaluate whether we can support using or switch to using PostgreSQL as the forms database altogether.

Justification

At DevOps, we try to keep the services we need to run our infrastructure to a minimum, and would like to focus on running PostgreSQL as our single source of truth in the future, especially because we don't really have MongoDB expertise on hand.

Implementation

A possible, but very big alternative might be integrating the forms backend int...

odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
#
[python-discord/bot] New branch created: fix-tempban-on-permaban
odd spireBOT
regal archBOT
regal archBOT
oak estuaryBOT
regal archBOT
odd spireBOT
oak estuaryBOT
regal archBOT
#
[python-discord/bot] New branch created: help-thread-owner-leave-message
odd spireBOT
regal archBOT
#

The background for this issue is no longer relevant given the filters rewrite, but the problem still exists https://python-discord.sentry.io/issues/4251592323/

ResponseCodeError: Status: 400 Response: {'deletedmessage_set': [{'id': ['deleted message with this ID already exists.']}]}
  File "pydis_core/utils/scheduling.py", line 257, in _coro_wrapper
    await coro
  File "bot/exts/filtering/_filter_lists/antispam.py", line 131, in process_deletion_context
    await deletion_co...
regal archBOT
#

There's a similar issue in the on_member_join method (https://python-discord.sentry.io/issues/5216780974) though it seems to be due to the on_member_join method being duplicated.

I think the best solution in both of these cases is to silently ignore the error. We know in both cases the user was only just created so we can assume it's up to date, and relying on the database is much simpler and more reliable than working out our own locking solution.

IMO it's fine to rely on "already ...

regal archBOT
odd spireBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
night lilyBOT
#
Sir Lancebot

Connected!

odd spireBOT
odd spireBOT
regal archBOT
#

The trailing newline is necessary for linting and shouldn't affect how the tag looks. I believe the suggestion was to remove some of the empty lines in the tag (e.g. between bullet points).

@BruDriguezz
This is correct. Apologies if that wasn't clear. The embed takes up a significant amount of white space when posted:
image

This may be a result of Discord's native list formatting (I'm u...

odd spireBOT
odd spireBOT
regal archBOT
regal archBOT
oak estuaryBOT
regal archBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
odd spireBOT
night lilyBOT
#
Sir Lancebot

Connected!

odd spireBOT
oak estuaryBOT
regal archBOT
#
        if old_reason:
            add_period = not old_reason.endswith((".", "!", "?"))
            reason = old_reason + (". " if add_period else " ") + reason

If no reason was given for the nomination, old_reason will be an empty string. In that case, reason should be left as is.

Also, I don't think reason can be None, if no reason was given it should be an empty string. It doesn't make sense to append nothing though so maybe we should handle that case and...

odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
oak estuaryBOT
odd spireBOT
odd spireBOT
odd spireBOT
odd spireBOT
regal archBOT
regal archBOT
odd spireBOT
odd spireBOT
odd spireBOT
odd spireBOT
regal archBOT
odd spireBOT
odd spireBOT
night lilyBOT
#
Sir Lancebot

Connected!

thin oysterBOT
#
Sir Robin

Connected!

night lilyBOT
#
Sir Lancebot

Connected!

oak estuaryBOT
oak estuaryBOT
regal archBOT
#

Description

The latex preamble determines which packages/commands are available to the user when writing .tex input for .latex command. This proposal involves adding fun TikZ-related packages to the latex preamble, which is located in sir-lancebot/bot/resources/fun/latex_template.txt. The proposed packages are:

regal archBOT
night lilyBOT
#
Sir Lancebot

Connected!

oak estuaryBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
oak estuaryBOT
regal archBOT
#

I'm for the auto-close feature, but not instant. Perhaps we could send a message saying that the thread will close in a minute instead? Such that if a user gets banned within a thread, messages can still go through for a bit.

In addition to that, perhaps an :x: could be added to the sent message to prevent the thread from closing. Might be out of scope for this PR though.

#
[python-discord/bot] branch deleted: fix-tempban-on-permaban
odd spireBOT
oak estuaryBOT
odd spireBOT
oak estuaryBOT
oak estuaryBOT
regal archBOT
odd spireBOT
oak estuaryBOT
regal archBOT
#

I'm for the auto-close feature, but not instant. Perhaps we could send a message saying that the thread will close in a minute instead? Such that if a user gets banned within a thread, messages can still go through for a bit.

In addition to that, perhaps an โŒ could be added to the sent message to prevent the thread from closing. Might be out of scope for this PR though.

I'm mostly not in favour of closing the help thread unless the helpee has been banned- but I can probably be con...

regal archBOT
regal archBOT
#

The initial reasoning behind the issue was to remove the confusion on where the user went if someone left/was banned, and I think sending a message is the simplest and least intrusive way of solving that.

I don't think auto-closing is really worth the extra complexity given it's such an edge case (and it could potentially be unwanted in some cases) unless there's a reason for it separate to the original motivation of the issue.

#
[python-discord/bot] branch deleted: help-thread-owner-leave-message
odd spireBOT
oak estuaryBOT
odd spireBOT
odd spireBOT
odd spireBOT
odd spireBOT
night lilyBOT
#
Sir Lancebot

Connected!

odd spireBOT
odd spireBOT
oak estuaryBOT
odd spireBOT
oak estuaryBOT
regal archBOT
oak estuaryBOT
regal archBOT
oak estuaryBOT
regal archBOT
#

Due to a recent incident, it is very important to note the need to special-case codeblocks' newline count.
image
It is important to note that, as shown in the image, a codeblock renders about 2 extra lines worth of space compared to a regular text line. It is also recommended to special-case headers, as they make text a lot larger than usual (although I haven't computed it yet).

regal archBOT
#

There's quite a lot of features of this bot that interact with codeblocks, so this issue doesn't give us much to go off of for potentially fixing what you believe to be incorrect.

Could you specify where we should special case this count?

It might be easier if you provide reproduction steps, what the expected behaviour is, and what the current behaviour is.

If you believe this is an exploitable bug and shouldn't be discussed publicly, please follow our [security notice](https://githu...

#
[python-discord/bot] branch deleted: move-url-regex-to-constants
odd spireBOT
regal archBOT
#
[python-discord/bot] New branch created: feat/1037/push-raw-to-pastebin-if-too-long
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
regal archBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
odd spireBOT
odd spireBOT
regal archBOT
oak estuaryBOT
odd spireBOT
odd spireBOT
odd spireBOT
night lilyBOT
#
Sir Lancebot

Connected!

regal archBOT
odd spireBOT
regal archBOT
#
oak estuaryBOT
odd spireBOT
regal archBOT
#

Or maybe a timeout? Could someone theoretically use this behavior to time
the bot out by leaving and rejoing real fast?

On Mon, May 6, 2024, 2:06โ€ฏPM wookie184 @.***> wrote:

@wookie184 https://github.com/wookie184 today I saw the bot post the
departed message twice. Any idea why?

https://discord.com/channels/267624335836053506/1237066212593242163

[image: Screenshot_20240506-115343] http://url

It looks like they left, rejoined, and then left again pretty ...

regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
odd spireBOT
regal archBOT
#

@wookie184,
My apologies, this issue completely slipped my mind!

I actually made some initial progress on it, but unfortunately, a data corruption issue wiped out all my work. This discouraged me a bit, and I decided to focus on other things with the intention of coming back to it later. Unfortunately, that later never arrived, and it completely fell off my radar.

Given my current workload, I wouldn't be able to dedicate time to this issue in the foreseeable future. If you'd be inter...

oak estuaryBOT
odd spireBOT
regal archBOT
odd spireBOT
night lilyBOT
#
Sir Lancebot

Connected!

oak estuaryBOT
odd spireBOT
regal archBOT
odd spireBOT
oak estuaryBOT
regal archBOT
odd spireBOT
oak estuaryBOT
oak estuaryBOT
odd spireBOT
regal archBOT
#
[python-discord/site] New branch created: soft-delete-reminders
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
odd spireBOT
regal archBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
odd spireBOT
odd spireBOT
odd spireBOT
regal archBOT
odd spireBOT
odd spireBOT
regal archBOT
regal archBOT
#
[python-discord/bot] New branch created: vivek/fix-eval-truncation
regal archBOT
#
[python-discord/site] branch deleted: soft-delete-reminders
oak estuaryBOT
regal archBOT
odd spireBOT
oak estuaryBOT
regal archBOT
odd spireBOT
odd spireBOT
regal archBOT
odd spireBOT
odd spireBOT
odd spireBOT
regal archBOT
#
jb3
[python-discord/bot] New branch created: jb3/2938-nominate-context-menu
#
jb3

This PR introduces a context menu command that will be available to all Helper+
staff members allowing them to add users to the nomination pool with additional
context.

Upon selecting a message and executing the Nominate User command, the message
jump hyperlink will either be appending to their existing nomination, or a new
nomination will be created with this hyperlink.

The command defaults to being unavailable to all users so upon merge an
Administrator will need to amend the applicatio...

odd spireBOT
regal archBOT
#
jb3
[bot] Branch jb3/2938-nominate-context-menu was force-pushed to `6da4bd3`
odd spireBOT
regal archBOT
#
jb3
[bot] Branch jb3/2938-nominate-context-menu was force-pushed to `de90de4`
odd spireBOT
regal archBOT
#
jb3
[bot] Branch jb3/2938-nominate-context-menu was force-pushed to `f2cb454`
odd spireBOT
regal archBOT
regal archBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
odd spireBOT
regal archBOT
odd spireBOT
odd spireBOT
regal archBOT
#
jb3
[bot] Branch jb3/2938-nominate-context-menu was force-pushed to `0aa83c1`
odd spireBOT
regal archBOT
#
jb3
[bot] Branch jb3/2938-nominate-context-menu was force-pushed to `414b25f`
odd spireBOT
regal archBOT
#
jb3
[bot] Branch jb3/2938-nominate-context-menu was force-pushed to `2c43ff8`
odd spireBOT
regal archBOT
regal archBOT
regal archBOT
#
jb3
[bot] Branch jb3/2938-nominate-context-menu was force-pushed to `f42666b`
odd spireBOT
regal archBOT
#
jb3
[bot] Branch jb3/2938-nominate-context-menu was force-pushed to `d42e3ec`
odd spireBOT
regal archBOT
#
jb3
[bot] Branch jb3/2938-nominate-context-menu was force-pushed to `e799849`
odd spireBOT
regal archBOT
#
jb3
[bot] Branch jb3/2938-nominate-context-menu was force-pushed to `5b209b1`
odd spireBOT
regal archBOT
#
jb3

dd2abe5 Add new Talentpool API method for fetching a no... - jb3
51e9e3e Add new context menu command for nominating users - jb3
5b209b1 Move from sentry_sdk.push_scope to sentry_sdk.n... - jb3
72b642b Merge pull request #3047 from python-discord/jb... - jb3

#
jb3
[python-discord/bot] branch deleted: jb3/2938-nominate-context-menu
oak estuaryBOT
regal archBOT
#
jb3
[python-discord/bot] New branch created: jb3/nom-context-char-limit
odd spireBOT
regal archBOT
#
jb3
[python-discord/bot] branch deleted: jb3/nom-context-char-limit
oak estuaryBOT
regal archBOT
#

If we're adding a line to say that the message was truncated, but we're only truncating one line, wouldn't it be better to not truncate and the result would be the same number of lines?

That's the proposal I put forward here https://github.com/python-discord/bot/pull/2498#issuecomment-1493339577, essentially, for max_lines=10:

  • 9 lines: not truncated
  • 10 lines: not truncated
  • 11 lines: truncated to 9 lines, plus the truncation message.

This is an improvement though, i'm happy to...

regal archBOT
odd spireBOT
night lilyBOT
#
Sir Lancebot

Connected!

regal archBOT
night lilyBOT
#
Sir Lancebot

Connected!

odd spireBOT
odd spireBOT
regal archBOT
odd spireBOT
oak estuaryBOT
regal archBOT
odd spireBOT
oak estuaryBOT
oak estuaryBOT
oak estuaryBOT
oak estuaryBOT
thin oysterBOT
#
Sir Robin

Connected!

regal archBOT
odd spireBOT
regal archBOT
oak estuaryBOT
regal archBOT
#
[python-discord/bot-core] New branch created: fix-dependabot
regal archBOT
#

I think similar to https://github.com/python-discord/bot/pull/3047, it would be helpful to have some sort of "Quick Incident" context menu that lets Helpers+ quickly right click a message and incident it, instead of having to copy the message link, go to the incidents channel, then come back.

This works great for quickly incidenting messages that are clearly breaking the rules, but is not meant to replace the #incidents channel, because it allows for adding multiple messages for referen...

regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
odd spireBOT
regal archBOT
oak estuaryBOT
regal archBOT
regal archBOT
oak estuaryBOT
odd spireBOT
odd spireBOT
regal archBOT
night lilyBOT
#
Sir Lancebot

Connected!

oak estuaryBOT
odd spireBOT
regal archBOT
#

Currently, if we do !cban or similar clean commands, the record of the messages being cleared gets output to #mods.

This can cause some confusion if two moderators are investigating and messages suddenly disappear, but there isn't a record in #message-change-log. If messages get deleted or edited, the logical place for a record of that to appear would be in #message-change-log.

So we should change where the record of deleted messages get sent to and send it to `#message-change-...

regal archBOT
#
[python-discord/bot] branch deleted: feat/1037/push-raw-to-pastebin-if-too-long
oak estuaryBOT
odd spireBOT
oak estuaryBOT
regal archBOT
#
jb3
[python-discord/bot] New branch created: jb3/active-nomvote-thresholds
#
jb3

This changes how we calculate whether we are ready for another vote in
the talentpool autonomination system.

Instead of hard-locking at 3 votes in the pool, we factor in whether an
admin-task has been created for the vote (signified by a reaction with
the :ticket: emoji).

We allow for up to 10 votes to be in the pool total, which in theory
allows 3 active votes and 7 votes waiting on the admin-task
completion (though we should never hit this threshold realistically).

This should allow for ...

odd spireBOT
regal archBOT
regal archBOT
regal archBOT