forked from MightyPork/group-actor
				
			
							parent
							
								
									df197f91b7
								
							
						
					
					
						commit
						4c8fbb413d
					
				| @ -0,0 +1,99 @@ | |||||||
|  | # Groups for Pleroma!!! | ||||||
|  | and Mastodon or anything with the Mastodon API. | ||||||
|  | 
 | ||||||
|  | ## Usage | ||||||
|  | 
 | ||||||
|  | ### Building | ||||||
|  | 
 | ||||||
|  | Install the rust toolchain using `rustup`: [https://www.rust-lang.org/tools/install](https://www.rust-lang.org/tools/install) | ||||||
|  | 
 | ||||||
|  | Rust 1.54+ is recommended. | ||||||
|  | 
 | ||||||
|  | Build with `cargo build`, or optimized: `cargo build --release`. The binary is placed in the `target/debug` or `target/release` directory. | ||||||
|  | 
 | ||||||
|  | You can also run the program using Cargo, that is handy for development: `cargo run`. When passing command line flags, use `--`: `cargo run -- -i my@group.xyz`. | ||||||
|  | 
 | ||||||
|  | ### Setting up a group account | ||||||
|  | 
 | ||||||
|  | 1. Create the group's account all nice like you want it. Pleroma and Mastodon should work, others may work too but you're on your own. | ||||||
|  | 2. Run the group service with `fedigroups -a mygroup@groups.social` (your account's handle) to authenticate. | ||||||
|  | 3. **Make sure you auth as the correct user!**  | ||||||
|  | 4. Paste the Oauth2 token you got into the terminal, hit enter. | ||||||
|  | 
 | ||||||
|  | The program now ends. The credentials are saved in a file `groups.json`. | ||||||
|  | 
 | ||||||
|  | You can repeat this for any number of groups. | ||||||
|  | 
 | ||||||
|  | ### Editing config | ||||||
|  | 
 | ||||||
|  | **Do not edit the config while the group service is running, it will overwrite your changes!** | ||||||
|  | 
 | ||||||
|  | The JSON file is easily editable, you can e.g. add yourself as an admin (use the e-mail format, e.g. `piggo@piggo.space`).  | ||||||
|  | The file format is quite self-explanatory. | ||||||
|  | 
 | ||||||
|  | ```json | ||||||
|  | { | ||||||
|  |   "groups": { | ||||||
|  |     "group@myserver.xyz": { | ||||||
|  |       "enabled": true, | ||||||
|  |       "acct": "group@myserver.xyz", | ||||||
|  |       "appdata": { | ||||||
|  |         "base": "https://myserver.xyz", | ||||||
|  |         "client_id": "...", | ||||||
|  |         "client_secret": "...", | ||||||
|  |         "redirect": "urn:ietf:wg:oauth:2.0:oob", | ||||||
|  |         "token": "..." | ||||||
|  |       }, | ||||||
|  |       "admin_users": [ | ||||||
|  |         "admin@myserver.xyz" | ||||||
|  |       ], | ||||||
|  |       "member_users": [], | ||||||
|  |       "banned_users": [], | ||||||
|  |       "member_only": false, | ||||||
|  |       "banned_servers": [ | ||||||
|  |         "bad-stuff-here.cc" | ||||||
|  |       ], | ||||||
|  |       "last_notif_ts": 1629626621000 | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | - `member_users` - used if `member_only` is true, then only members and admins can post to the group | ||||||
|  | - `banned_users` - can't post or interact with the group service | ||||||
|  | - `banned_servers` - work like an instance block | ||||||
|  | 
 | ||||||
|  | ### Running | ||||||
|  | 
 | ||||||
|  | To run the group service, simply run it with no arguments. It will read what to do from `groups.json`. | ||||||
|  | 
 | ||||||
|  | Note that the file must be writable, it is updated at run-time. | ||||||
|  | 
 | ||||||
|  | ### Commands | ||||||
|  | 
 | ||||||
|  | To share an original post, mention the group user. | ||||||
|  | Posts with commands, and replies, won’t be shared. | ||||||
|  | 
 | ||||||
|  | Commands are simple text lines you use when mentioning the group user. DMs work well for this. | ||||||
|  | One post can contain multiple commands; the replies will be batched to one response. | ||||||
|  | 
 | ||||||
|  | **Basic commands** | ||||||
|  | - `/ignore, /i` - make the group completely ignore the post | ||||||
|  | - `/members, /who` - show group members / admins | ||||||
|  | - `/boost, /b` - boost the replied-to post into the group | ||||||
|  | 
 | ||||||
|  | **For member-only groups** | ||||||
|  | - `/leave` - leave the group | ||||||
|  | 
 | ||||||
|  | **For admins** | ||||||
|  | - `/announce x` - make a public announcement from the rest of the status | ||||||
|  | - `/ban x` - ban a user or a server. Note that this is only on the service level, the account won't be blocked or muted. | ||||||
|  | - `/unban x` - lift a ban | ||||||
|  | - `/op, /admin user` - grant admin rights to the group | ||||||
|  | - `/deop, /deadmin user` - revoke admin rights | ||||||
|  | - `/opengroup` - make member-only | ||||||
|  | - `/closegroup` - make public-access | ||||||
|  | 
 | ||||||
|  | **For admins of private groups** | ||||||
|  | - `/add user` - add a member (use e-mail style address) | ||||||
|  | - `/kick, /remove user` - kick a member | ||||||
					Loading…
					
					
				
		Reference in new issue