https://github.com/shiryel/ryush-bot
:sparkles: Ryush is a discord bot specialized on automated tasks
https://github.com/shiryel/ryush-bot
bot discord discord-bot elixir ryush-bot ryush-discord-bot
Last synced: 4 months ago
JSON representation
:sparkles: Ryush is a discord bot specialized on automated tasks
- Host: GitHub
- URL: https://github.com/shiryel/ryush-bot
- Owner: shiryel
- License: agpl-3.0
- Created: 2020-09-28T03:42:34.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2022-03-29T06:36:16.000Z (about 4 years ago)
- Last Synced: 2025-08-31T22:36:28.707Z (10 months ago)
- Topics: bot, discord, discord-bot, elixir, ryush-bot, ryush-discord-bot
- Language: Elixir
- Homepage:
- Size: 13 MB
- Stars: 4
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# ππΊπΆπ΄π©
[](https://twitter.com/shiryel_)
Ryush is a discord bot under construction

## How to use
### β‘ [First click here to invite the bot to your server](https://discord.com/api/oauth2/authorize?client_id=764685221756796959&permissions=26688&scope=bot)
The permissions that he needs:
- Send Messages
- Manage Messages
- Embed Links
- Add Reactions
Then you can use `!help` or `@Ryush help` to see the comands
**To change the prefix use `!change_prefix` or `@Ryush change_prefix`**
The permissions for each `managed command` can be configured by a administrator
## Code structure
For making this bot scalable, its used a **BUNCH** of dynamic supervisioned processes (powered by erlang π), it works, but needs caution when changing stuff, mainly because its use a Mnesia DB to keep the process state per node!
So, you probably is wandering what is the flux, well... its like that:
### Discord
```
API --> WebSocket --> Guild --> GuildTalk[command] --> Connection
| |--> GuildFlow[command] --> Connection
| |--> GuildEmojer --> Connection
v
GuildEmojer --> Connection
```
- `API` is the discord API
- `WebSocket` is the discord bot websocket connection
- `Guild` is a `GenServer` that keeps a guild state
- `GuildTalk` is a `GenServer` that keeps a talk with a user on a channel
- `GuildFlow` is a `GenServer` that keeps a command running on a channel
- `GuildEmojer` is a `GenServer` that handles puting emojis on the bot messages
- `Connection` is just a layer to use the discord API with the internal `Guild` struct
## Docs
You can generate the docs with `mix docs` and then access the index.html from your browser!
## How to test
If you want to add new feature for your friends, you can change the code and then with elixir and the phoenix framework installed you can run:
```
export BOT_TOKEN="you discord bot_token here"
# start postgres container
podman run -d -e POSTGRES_PASSWORD=postgres -p 5432:5432 postgres
mix deps.get
mix ecto.setup
mix phx.server
```
Now you can test your bot on your discord and visit [`localhost:4000/dashboard`](http://localhost:4000/dashboard) to see the bot dashboard
# Legal Stuff
## Software License
Give credit where credit is due. If you wish to use my code in a project, please credit me.
Just don't blatantly copy it or refrain from crediting.
Ryush, a bot for doing fun stuff
Copyright (C) 2020 Shiryel
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
[The full license can be found here](https://github.com/shiryel/ryush-bot/blob/master/LICENSE)
## Artwork License
The artwork for this project (more specificaly the Ryush profile picture) is licensed under
Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0)
Copyright (C) 2020 Shiryel