ChatChain: A ChatServices linking API
utopian-io·@asherslab·
0.000 HBDChatChain: A ChatServices linking API
https://github.com/ldtteam/chatchain (branch: rewrite) Hi, there. Recently I was asked by a friend of mine to make a post about the project I'm working on here. Here it goes: ChatChain is an open source project that I started working on (properly) about 3 months ago. The aim of the project is to provide a generic web API for linking various (text) chat services (and game chats) together in more dynamic ways than is currently available. At the present time, most forms of linking chat services together are only available in a 1 to 1 form (e.g. between Discord and IRC) -- I hope to change this in an efficient and elegant manner. ## Project Structure: The project currently is using Microsoft's ASP.NET Core framework (v2.2) and consists of 3 main parts: * A SignalR hub implementation which is the API that clients send and receive messages from. <- henceforth referred to as the Hub * An IdentityServer4 implementation which is used to provide authorization to the clients for the hub. <- henceforth referred to as the IS4 Server * A simple Razor WebApp which is used as a frontend to manage Clients and Groups, and uses .NET Core Identity for the users within. <- henceforth referred to as the WebApp All parts of this project have been made to integrate with a MongoDB instance for data storage, and a Redis server for intercommunication when scaled out or load balanced. The WebApp is currently only functional, and is ugly and full of default information and CSS/HTML. With the above in mind, we move on to a few components of the API/service. Currently we have 3 main components, Clients, Groups and Users. * Clients are what connect to the Hub and relay the various messages to and from the Chat service or game they are created for. (E.G. a Discord Bot) * Groups you can think of as Channels, they are simply groups of Clients. A client may have many groups. * Users are as you might expect, the various people (or bots) sending messages on a Chat service. ## Current Status: Most of the server is done other than the specific Hub methods, I am currently working on two clients, one for Discord and one for Minecraft.  I have been able to create methods for relaying Generic Messages and Client Events (connecting/disconnecting/etc). I am now working on User Events, such as Connecting, Disconnecting, Death, Banning, Kicking and Achievements. #### Planned Clients: * Discord * Slack * IRC * Minecraft ~ feel free to suggest any other platforms (with bot/modding capabilities) to add! ## Planned Features * An API for the WebApp for easier management. I'd like this to be a simple REST api that would allow people to add, remove and create both clients and groups. * Server-Side plugin capabilities, such as a centralized Swear Filter The first step for this would be a way to load plugins (maybe lua? or otherwise .dll files). [(This Might Help)](https://natemcmaster.com/blog/2018/07/25/netcore-plugins/) after that would be to setup events that in the hub that plugins could use to edit messages or other hub methods to their liking. * A Better WebApp UI (Would love some help!) I'd like to make the WebApp actually presentable, I'm thinking of probably a darker colour scheme, and just a generally better layout. I'm pretty sure almost anything is better than the current state of the UI (sadly) * User Storage A way to store the various users on different clients, and be able to keep things like join/leave dates and other simple information. This will also be important for the next feature. * Link users together A way to be able to link a person's various chat service users together, this would allow for things like making chat use the user's service specific username (and profile picture) instead of whichever username is used on the sending client. * Commands Relaying If you ban a user on one chat service, you probably want them banned everywhere right? well this would be what would make that possible, among other things this would also allow you to run bot commands on other clients, and even game commands from a chat * Permission Management (for Command Relaying) The above feature is only useful if only the appropriate people can use it, but sadly each and every different chat service or game has its own permissions style, etc. This feature would allow for a hopefully simple way to bridge those together, my thoughts on this are making groups of users (a user can have multiple groups) which signify permission levels, these groups are then mapped on each client to their client's respective permissions.
👍 raycoms, porousedsnax, espoem, ascorphat, someaddons, steemitag, curx, zapncrap, osm0sis, tanzil2020, sustainablelivin, bergelmirsenpai, ladydazzle, amosbastian, tobias-g, jaff8, rufans, asaj, fego, ctime, codingdefined, teamcr, xrp.trail, mcfarhat, steem-ua, newsrx, clayjohn, sargoon, roy2016, trufflepig, jga, katamori, cryptouru, tipu.curator, meme.nation, bejust, feronio, progressing, reggaemuffin, upgoat, utopian-io, tombstone, cryptouno,