Apps.BadWords - Google Summer of Code 2021

google-summer-of-code

Apps.BadWords : A Rocket.Chat App for bad words filtration for incoming messages and apply moderation policies.

Abstract

Currently Rocket.Chat supports the bad words filtration of incoming messages in channels but that is not much customizable for the user. The idea for this App is to utilize the capabilities of Rocket.Chat.Apps-Engine and make a Rocket.Chat app which can provide a feature rich experience to the users and people can use the app according to their needs.

Deliverables

The deliverables of the project are as follows:

  • Create a UI for managing the App settings.
  • Load a list of words from a URL.
  • Add/Remove words from a list.
  • Add/Remove channels where the bad words filtering is enabled (with a toggle for "all channels").
  • Provide statistics on blocked words and offending users.
  • Automatically deactivate users that go above a certain threshold.

All of the listed deliverables were completed within the GSoC period.

The App can be found here - App on Github.

Links to Related Pull Requests

Apart from these contributions, I have contributed to other Rocket.Chat projects. They can be summarized as:

Project Reference
Rocket.Chat - main repo Pull requests
Rocket.Chat.ReactNative Pull requests
Opensource-Contribution-Leaderboard Pull requests

Features

The features of the project are as follows:

  • Basic App Settings and Settings handler.

    • Settings Handler called every time any settings changes or when the app restarts.
  • Getting the final list of blocked words.

    • Fetching words from URL.
    • Getting user defined blocked words.
    • Removing user defined allowed words from the list of blocked words.
    • Getting list of Blocked words whenever app starts or restarts.
  • Basic Message Filtering.

    • Checking the message against the list of blocked words at the time of saving new message and removing blocked words.
    • Cheking the message against the list of blocked words whenever any message is edited and removing the blocked words.
  • Applying moderation policies for offending users

    • Storing the number of times a user uses bad words in a channel.
    • Banning a user and not letting the user send message in the room if the user exceeds the threshold limit set by admin.
    • Showing warnings to the users whenever a bad word in their message is found.

Mentors

I would like to thank my mentors Marcelo Schmidt & Douglas Gubert for helping me complete the project and giving me this opportunity.

🔗 Links

Student Yash Rajpal
Organization Rocket.Chat
Project Apps.BadWords
GitHub yash-rajpal
LinkedIn Yash Rajpal
Email rajpal.yash03@gmail.com