quiltmc / cozy-discord Goto Github PK
View Code? Open in Web Editor NEWDiscord bot used for Quilt's day-to-day tasks. Discord avatar based on Feuerfuchs blobfox emoji at https://www.feuerfuchs.dev/en/projects/blobfox-emojis/
License: Other
Discord bot used for Quilt's day-to-day tasks. Discord avatar based on Feuerfuchs blobfox emoji at https://www.feuerfuchs.dev/en/projects/blobfox-emojis/
License: Other
Currently, when a user using PluralKit posts a message in the #gallery channel, a thread is created on the user message, which is then deleted, making the thread unaccessible. We should account for it.
When a user post a message, the bot should wait up to one or two seconds to see if the message gets deleted. If so, the PluralKit API should be called. If the message correctly resolves, the thread should be created, with ownership granted to the user account.
Log parsing could be moved to its own library, allowing it to be used in other ways (ex: a log analysis page on Quilt's website, possibly through Kotlin/JS; or even in other communities' bots/other tools)
Partially expands upon #54
Cozy should integrate with GitHub Teams, in order to either assign users to teams that correspond with their Discord roles on the Toolchain server, or to grant users roles based on the teams they're assigned to on GitHub.
This needs fleshing out. Please have a conversation!
After a long discussion in a suggestion on the community server, we devised an idea for a user-managed discussion thread system. A system like this would have the following requirements:
A sample thread might look something like this:
This has a few use-cases:
The Showcase mode should be worked on soon. It'll need to make use of #3, but work can begin before that.
The Showcase mode comprises all of Cozy's showcase channel functionality. The following list of features must be completed before this mode can be considered ready.
-discussion
), in line with our pollingDiscussed and approved via a suggestion, https://discord.com/channels/817576132726620200/1043967546744901732/1047056721174089728
Can always be reverted if it turns out badly.
Quite a few community members seem the prefer the official blog posts about Minecraft updates, and keep posting the link to the official blog post in each thread posted by the bot. I think it'd make a lot of sense for Cozy to automatically include this link alongside Quilt's one.
While the blog post URL is not included in the launcher patch notes it can be obtained via the API used to fetch articles for https://www.minecraft.net/en-us/articles. See the URL used by the page, the filters can be adjusted to return fewer unrelated articles.
I'm not sure if this is feasible to implement, but I did not see any discussion on this before from a little searching on this issue tracker and in Discord so I figured I'd suggest it.
Edit: It's also possible to find all posts via the sitemap, might be preferred since it has no pagination.
Cozy needs to be able to manage the welcome channels. This includes:
We'll likely want to create a block system that can be configured via a URL - so, a server would have a welcome channel configured with the URL to a file (probably in this repo), which contains blocks representing each element that needs to be in that channel.
I envision blocks as Markdown documents with front matter, placed within the same file. A block should have a type
and its own configuration options - though we can flesh this issue out later.
Quilt-specific tasks:
Hello! It me!
When I was still working on Cozy, some of the modules I created were designed to be used by external projects. As I'm no longer part of Quilt, I'd like to adopt them as mainline, first-party Kord Extensions modules:
As I contributed the vast majority of the code present in these modules, I believe there should be no issue with this from a licensing standpoint. However, I wanted to make sure that was alright with the people who are now running this project.
Of course, you'll be able to use the adopted modules in Cozy as has always been the case - that's the point!
The toolchain Discord server has a somewhat complex management setup. We need to automate this to make it easier, and I think we can do that with Cozy with a bit of work:
It might be useful to add some kind of internal voting system, but this isn't required for an initial version
What about commands semilar to those from the linkie bot to look up mappings?
With the new timeout feature reaching GA, we should make sure that a user timed out in one server is also timed out in the other. That should be done using a member edit listener, as it should be fired every time the timeout changes. We should also make sure to account for early un-timeouts.
Cozy is capable of analysing logs in the support channel in Quilt, and some just send logs there for getting its automatic analysis of what's going wrong. Allowing it to be DM'd could be useful for those who uses the automatic analysis for their own use rather than to get support.
the mod incompatibility list should be somewhere other than the forum, for two reasons
I propose we host it on github, so update can simply be done through pull requests. I think a dedicated repository for this file would be best, so parity issues with the forum could be tracked through github issues.
Due to the poor implementation of invite filters in Zeppelin (lack of a comprehensive log message, automatic triggering if the invite lookup endpoint gets ratelimited), we would like to get our own invite filter right inside Cozy.
The following should all set the audit log reason to the format of "[username] used [command]"
Because of the changes proposed in #17, I think it's worth moving to a weak copyleft licence. The Mozilla Public License (2.0) is what Kord Extensions (the Framework Cozy uses) is written under, so I'm relatively familiar with it.
This licence change would largely only affect contributors and people that use forks of this repository. It would require anyone distributing modified source code to retain the MPL licence and attribution, and anyone who distributes binary copies to make their modified source available and link to it (or link to this repo if they aren't modifying it).
The licence change would not affect private use, and anyone developing a bot using Cozy modules as provided would not need to do anything.
Cozy is currently licensed under the Creative Commons Zero licence. This is a public domain dedication, which means that we don't technically need to seek permission to change the licence. That said, I would much rather gather that permission from our contributors regardless, in the interests of transparency and good faith interaction.
For that reason, I'll need that confirmation from the following people:
The following people are not contributors, but I'm aware that they may have projects that fork or otherwise use code from this project. For that reason, I'd also like to request their permission:
If you're happy with this licensing change, please leave a comment to that effect below.
Cozy should be able to run Community Team votes for us, and ideally be able to assign and unassign roles as needed by the process.
The voting process is outlined in RFC 0007. Cozy should be able to keep track of voting community team members, voting timeouts and pass/failure conditions, automatic role assignment (if needed), date of promotion, and so on.
This is potentially a pretty big feature, but we'll see.
Those lines should be changed to also allow Community Managers to use those commands:
Especially in the case of archiving (when the prevent archiving is on) and transferring ownership, those features aren't available from the Discord client and are required to operate the community.
Cozy is currently very coupled. Extensions need to be factored out into modules, and made generic enough that they'd be easy to slot into a KordEx bot that isn't intended only for Quilt.
We can likely get away with using Gradle submodules for this pretty easily.
Dear Quilt staff,
I would like to request to be able to do a self-timeout that also revokes our ability to see channel contents.
We're currently taking a break from Quilt due to mental health, and thus would like to be able to revoke our ability to see messages as to not have a reason to interact, without having to fully leave the guild.
This could maybe be implemented as an additional optional argument?
Regards,
Rory&
For following specific mojira issues and be aware of their state changes.
Since discord has introduced markdown functionality it would be beneficial if the update message by Cozy could utilize it for a cleaner look.
It already does partially use markdown for the headlines line Changes
or Fixed bugs in 1.21 Release Candidate 1
and lists them using Makdown. Links are using HTML though, (MC-SnapshotVersion)[link] should fix this
PolyMC/PolyMC#1595 allows PolyMC to be used as a so-called "offline mode" launcher, not requiring a Minecraft license to use, so we shouldn't be providing support to people using it.
Cozy should present an alert if it detects the PolyMC launcher and recommend that the user use Prism instead.
There is currently no central concept of thread ownership. The bot often needs to create managed threads for users, and those users should be able to alter those threads - the suggestions extension does this, but it should be generalized for other extensions.
This will involve adding a Threads
collection, and migrating the suggestions threads over to it.
When getting yarn mappings for a method, the mixin target is missing the semicolon between the class and the method name. For instance, ?ym TickCriterion.trigger
will give the target:
Lnet/minecraft/advancement/criterion/TickCriteriontrigger(Lnet/minecraft/server/network/ServerPlayerEntity;)V
should have a semicolon here ---------------------^
This error does not occur for field mixin targets
If I use an output from the bot as-is, for example net/minecraft/entity/Entity::getVelocityAffectingPos
, it always says "No results found". I have to change the ::
to .
or /
.
Add a command for mods to get, set and reset the slowmode of a channel
Additionally, switching the logic to watching for a new, proxied message rather than the deletion of the old one may improve detection, as PK will not delete the message until it knows that a proxied one has been sent successfully
The Ban Sharing mode comprises Cozy's ban-sharing functionality, exclusively for use with other large modding communities that we collaborate with. It needs to contain a number of features, but it's worth noting that none of these features should allow the bot to create bans automatically.
I created a silly diagram at some point, so here it is:
Something that's critical to remember is that, while the above features must all be present and fleshed out, they will ultimately be temporary - someday, it's hoped that this functionality can be extracted into an entirely separate organization, with a proper HTTP API, web interface, the ability to write your own bots that consume it, and so on. This is a massive, massive undertaking, though - and not one that will be worked on any time soon - so Cozy should have a good, reliable system of its own until then.
I forgot to make an issue for this, so let's make one now.
As discussed in a Discord suggestion, I believe we can do better with our voice channels. Voice channels are often made use of for a specific purpose, but many people make use of them in different ways - and often not in the ways that the group originally using the channel expects. This can result in users disrupting the conversation or activity, and generally causing problems unintentionally.
I proposed that this is a function of how we handle voice channels, and I think we can work around it by creating a Cozy module to automatically handle voice channels. It should work something like this:
Approaching voice channels in a dynamic way like this should result in less general voice disruption and a better way to signpost what a channel is for.
Two things we noticed just now
Currently, there are still the ?help
and ?sync bans
commands. The help command no longer has a reason to exist with the slash command info being given when you just type /
. Thus, the help command should be removed, and the ban sync command moved to a slash command. (Also, change the Cozy [?]
bot name accordingly).
Devlogs are currently published via announcements channels into another channel on the community server. Instead of this, we should write a Cozy extension that sends them directly to that channel with an embed customized for each team - this would allow people to follow the full suite of devlog channels on their servers directly.
We want to help push out Quilt streaming content to our users, by temporarily hosting streaming developers.
We have a few streamers in the community, periodically streaming Quilt development, whenever it is on Quilt itself or developing a Quilt mod. We want to show appreciation for those people, and help push out their content to more of our users. More details can be found in the suggestion.
We will start with Twitch for now, as our main streamer base is there. We may explore more platforms such as Youtube in the future.
After an application through ModMail, the moderators should be able to use a command to assign the "Twitch Streamer" role to a user and store their Twitch user name or user ID in permanent storage1.
Users with the role "Twitch Streamer" should be able to use the /start-stream
command and get hoisted with the "Live on Twitch" role. The bot shall periodically call the Twitch API /streams
endpoint to check if the user is still live. If not, the "Live on Twitch" role shall be removed.
We cannot automate giving the role at the time of writing, as the Twitch API does not support custom tags. If that would change in the future, we should be looking for the #QuiltMC
tag on streams of verified streamers, and remove the need for the command.
This will require updating our privacy policy โฉ
The way migrations are done is silly. We should write an annotation processor with KSP that allows us to more easily tag migration functions and have them automatically set up.
When an uploaded attachment is detected by Cozy, it should answer with the suggestion to upload the logs directly to mclo.gs, with a button to do that automatically. The attachment should also be removed if possible.
Uploading to mclo.gs helps out in some areas like not needing to download the file to read it fully and being able to actually help with problems on mobile.
This also been discussed in the Discord suggestion 1049616224717385768
.
mclo.gs has an API available over at api.mclo.gs.
We currently have a partial implementation of config commands. Here's what's done, and what needs doing:
We may need to revisit the scope of some of the config options to make sure everything we need to be configurable is.
(Suggestion 928257607582494730)
Cozy should have a status message. It currently looks out of place in the member's list compared to all the other bots:
There are two options that I can think of:
Watching over Quilt
Watching over Quilt
Playing Minecraft
The second option could be more fun and interesting, so that one has my personal vote.
Simple enough: A command that marks a thread as "should not archive", and unarchives it whenever that happens - unless a staff member archives it with /thread archive
. Can probably just modify the existing threads collection for this.
As Discord's "Active Threads" list is staff-only, it'd be nice if Cozy could maintain a message or channel that keeps track of active and new threads, just so that people have an easy way to learn about them.
When adding a filter, we want to be able to know what that is and why it has been added. Filter notes should help us with that.
How do we want to handle existing filters? Do we want to give them an empty note and fill them up later?
Cozy is asking people to replace FLK by QKL when the user is on the Quilt Loader using FAPI. It should not since QKL depends on QSL.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.