Open IZeeLikeEyeZee opened 1 year ago
Moderator approval process details: #17
2. It gets checked for if it's a duplicate emote
Hummm, this is... not that easy. Well, we can check if they binary identical, but that doesn't catch visually similar images, and comparing the uploaded image against all the other images is very expensive.
I looked into it, and the best option seems to be calculating a set of hashes dependent only on the visual data, using https://github.com/JohannesBuchner/imagehash, and then comparing the collisions directly.
Sure whatever you think is best, I just know that bttv does it somehow so figured we could probably do smth similar 👍 and we can also rely on reports/memory to filter them out. Maybe we can add something based off the name where it says "is this the emote you're looking for?" and its like an embedded search function to avoid dupes. Idk what the best solution here would be, I just figured dupe system would be good for not having to host as many images, and for keeping things organized :)
Actually I remembered about this tool which probably uses something similar. It works pretty well too and has a dynamic threshold like I was talking about :)
Approval process similar to 7tv's, but with some added automation to make things easier for moderators. Process would look something like this:
Emote gets uploaded
It gets checked for if it's a duplicate emote, if it is then the user gets notified, shown a comparison between the uploaded emote and the one it is a duplicate of, and can cancel creation or flag it as a mistake and submit the emote with a reason. ⤷ Would like to have a similarity threshold that we can edit if needed ⤷ Sometimes bttv's dupe feature flags similar emotes, but they were cleaned up/made higher-res. This system would allow us to review such cases.
It gets checked against rejected emotes/names with reasons. Fail = deny ⤷ for example if the problem is specifically the name/image combo'd together, then an emote with just said name or image can get through, but not something with the same ⤷ if the reason is just the name (e.g. slurs, bigotry, etc), and the created emote uses that name, it gets denied (same sort of thing for image contents)
Emotes that pass step 2 and 3 get sent to queue for moderator approval.
Insert moderator approval things here (will describe moderator approval options in another issue and link it here when I do)