Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/shitcorp/todobot
ππ€ Simple, efficient and most importantly elegant TODO Bot. A virtual TODO List right inside your Discord server!
https://github.com/shitcorp/todobot
bot discord discord-bot discord-js discord-js-bot hacktoberfest hacktoberfest2020 tasks todo
Last synced: 3 months ago
JSON representation
ππ€ Simple, efficient and most importantly elegant TODO Bot. A virtual TODO List right inside your Discord server!
- Host: GitHub
- URL: https://github.com/shitcorp/todobot
- Owner: shitcorp
- License: bsd-3-clause
- Archived: true
- Created: 2020-06-21T16:10:03.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2024-07-11T05:36:27.000Z (6 months ago)
- Last Synced: 2024-09-20T04:17:53.990Z (3 months ago)
- Topics: bot, discord, discord-bot, discord-js, discord-js-bot, hacktoberfest, hacktoberfest2020, tasks, todo
- Language: TypeScript
- Homepage: http://todobot.stlf.me
- Size: 79 MB
- Stars: 67
- Watchers: 6
- Forks: 10
- Open Issues: 18
-
Metadata Files:
- Readme: README.md
- Contributing: .github/CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
TODO Bot for Discord
# π About the Bot
This Bot aims to provide a virtual TODO list inside your discord server. Instead of relying on commands for interacting with the bot, I tried my best to make the entire "user interface" with reactions. That way your users dont have to learn hundrets of new commands and how to use them.
# π¬ Getting Started
After inviting the Bot to your server, run the command `/settings set todochannel: #yourchannel`. This generates a new config and saves your todochannel. Your TODOS or tasks will then be posted in that channel.
Click to see the bot in action
![getting started demo](https://github.com/shitcorp/TODOBOT/raw/main/assets/gifs/getting-started.gif)
# π₯οΈ Commands
To view all the commands the bot supports, run the `/help` command. If you want to get more specific information about a command run the command `/help` with the command that you want information about as frist argument. So if you wanted to get information about the todo command, you would want to run the command like so: `/help todo`.
**Available Commands:**
assign
# /assign
> Assign someone to a task no matter if they want or not.# Arguments
| Name | Description | Type | Required? |
| :--- | :-------------------------------------------------- | :------------ | :-------- |
| user | The user you want to assign. | User | βοΈ |
| id | ID of the task that you want to assing the user to. | String (Text) | βοΈ |# Assign Command
Welcome to the documentation of the `assign` command. It is used to assign members to tasks.blacklist
# /blacklist
> Blacklist user(s) and/or channel(s)# Subcommands
## /blacklist add
| Name | Description | Type | Required? |
| :------ | :-------------------------------- | :------ | :-------- |
| user | The user you want to blacklist | User | β |
| channel | The channel you want to blacklist | Channel | β |
## /blacklist remove| Name | Description | Type | Required? |
| :------ | :-------------------------------- | :------ | :-------- |
| user | The user you want to blacklist | User | β |
| channel | The channel you want to blacklist | Channel | β |
## /blacklist listNo arguments required. Description:
> Show your current blacklists.help
# /help
> Show all available commands and their usage.# Arguments
| Name | Description | Type | Required? |
| :------ | :---------------------------------------------- | :------------ | :-------- |
| command | The command you want specific infomation about. | String (Text) | β |invite
# /invite
> Invite the bot to your server.list
# /list
> List todos for your server. Use the π emoji to repot the currently open todo. Use the arrow emojis to navigate.reminder
# /reminder
> Create, edit and view reminders# Subcommands
## /reminder create
| Name | Description | Type | Required? |
| :----------------- | :---------------------------------------------------------- | :------------------------- | :-------- |
| time | After this timespan you will be reminded. | Number (0, 1, 2, 3, 4 ...) | βοΈ |
| unit | Minutes? Hours? Seconds? Choose now. | String (Text) | βοΈ |
| content | Reminder Text that will be shown when the reminder expires. | String (Text) | βοΈ |
| participants | Choose another user or users that should also be reminded. | User | β |
| participatingRoles | Choose a role that should be reminded. | Role | β |
## /reminder viewNo arguments required. Description:
> View your reminder(s).settings
# /settings
> View and edit bot settings.# Subcommands
## /settings set
| Name | Description | Type | Required? |
| :-------------- | :-------------------------------------------------------------------------------------- | :---------------------- | :-------- |
| prefix | The prefix the bot will use for your custom commands or tags. | String (Text) | β |
| todochannel | The channel that will be used to post your todos in. | Channel | β |
| readonlychannel | The channel that will be used to keep your community updated. | Channel | β |
| userrole | Add a new userrole. Userroles can interact with the bot but cannot change bot settings. | Role | β |
| staffrole | Add a new staffrole. Staffroles can edit bot settings and force assign users. | Role | β |
| language | The language the bot uses to talk to you. | String (Text) | β |
| autopurge | Toggle messages being auto purged in the todochannel. | Boolean (true or false) | β |
| todomode | Toggle between simple (one channel) and advanced (multiple channels) mode | String (Text) | β |
## /settings viewNo arguments required. Description:
> View your current settings.
## /settings remove| Name | Description | Type | Required? |
| :-------- | :-------------------------------------------------------------------------------------- | :--- | :-------- |
| userrole | Add a new userrole. Userroles can interact with the bot but cannot change bot settings. | Role | β |
| staffrole | Add a new staffrole. Staffroles can edit bot settings and force assign users. | Role | β |# Some Additional Information
## Readonly Setting
If you set a readonly channel, you can from now on use the `share` reaction ![](https://cdn.discordapp.com/attachments/724022854231916684/844963684501684234/unknown.png) to share the todo to the channel that you configured. All changes to that TODO will be mirrored to that channel, so if someone finishes a task, edits the todo or closes it, everything will be shown in the read only channel.
## User/Staff Roles
These roles are used to determine permissions. "USERs" are users that can interact with the bot. People with the "STAFF" role are users that can change and edit bot settings and force assing users. Having the discord permission `MANAGE GUILD` will override this permission system and allow you to edit the bots settings.
## Autopurge
If you enable this setting, all messages that are sent in your configured todo channel and are not from the bot or a user without the `STAFF` role will be deleted. This is useful if you want to use your todochannel for tasks only and keep the chatting in other channels.
## Todomode
As you may have seen, there are 2 choices for this: `simple` and `advanced`:
**Simple**
> In this mode all "todo activity" will happen in the preconfigured TODO channel. Means if you run the todo command in lets say the `general` channel, your todo will pop up in the configured todo channel (lets call it `tasks`).
**Advanced**
> In this mode, the todos will be created in the channel, where the todo command is run in. So lets say you run the todo command in the `general` channel, the todo will pop up in this very `general` channel.
shorten
# /shorten
> Shorten a link.# Arguments
| Name | Description | Type | Required? |
| :----- | :-------------------------------------------------- | :------------ | :-------- |
| Link | The link that you want to get shortened. | String (Text) | βοΈ |
| Domain | The domain you want to use for your shortened link. | String (Text) | β |stats
# /stats
> Show some bot statistics like memory or CPU Usage.suggest
# /suggest
> Suggest new features to be added into the bot# Arguments
| Name | Description | Type | Required? |
| :----- | :-------------------------------------------------- | :---------------------- | :-------- |
| text | Your suggestion | String (Text) | βοΈ |
| image | If you want to attach an image, paste the link here | String (Text) | β |
| hidden | Hide the server where this suggestion was sent | Boolean (true or false) | β |support
# /support
> Get information on how to contact the developer(s).tag
# /tag
> Bild your own commands like a pro.# Subcommands
## /tag learn
| Name | Description | Type | Required? |
| :------ | :--------------------------------------------------------------------- | :------------ | :-------- |
| name | The name of your new command/tag. | String (Text) | βοΈ |
| content | This is the content that will be sent when your custom command is run. | String (Text) | βοΈ |
## /tag unlearn| Name | Description | Type | Required? |
| :--- | :------------------------------ | :------------ | :-------- |
| name | The command you want to delete. | String (Text) | βοΈ |
## /tag edit| Name | Description | Type | Required? |
| :------ | :----------------------------------------------- | :------------ | :-------- |
| name | Name of the command you want to edit. | String (Text) | βοΈ |
| content | The content that you want to save as the new tag | String (Text) | βοΈ |
## /tag listNo arguments required. Description:
> List available tags.todo
# /todo
> Create a new TODO object# Arguments
| Name | Description | Type | Required? |
| :------- | :------------------------------------------------------------------------------------------------ | :---------------------- | :-------- |
| title | Title of the TODO object | String (Text) | βοΈ |
| tasks | The tasks that belong to this todo. Seperate them with a semicolon (;). Maximum 10 tasks allowed! | String (Text) | β |
| content | Content of the TODO object | String (Text) | β |
| url | Attach a link to the todo | String (Text) | β |
| image | Attach an image to the todo. Has to be a discord attachment link. | String (Text) | β |
| category | The category this todo should belong to. | String (Text) | β |
| loop | Create repeating tasks | Boolean (true or false) | β |# Images & Attachments
If you want to attach an image to your task, you can simply upload an image and give it a title like so: {{thisismytitle}} ("thisismytitle" will then be the title to reference).When creating your task then reference the image with your title in the image options. The image will then be embedded into your todo list. **Note:** The image will be available 24hrs after uploading (for every guild member). This is due to the bot caching the links to images that are uploaded with the special tags (the double curly brackets {{}}).
For attaching normal links, just put them in the url option, if will then be shown as attachment in your todo list.
tutorial
# /tutorial
> Get a short tutorial on how to use the bot.var
# /var
> Set, view, edit and delete configvariables. Use them in your tags like so: <%foo%> to be replaced with the variable 'foo'# Subcommands
## /var create
| Name | Description | Type | Required? |
| :---- | :-------------------------------------- | :------------ | :-------- |
| name | How you want your variable to be named. | String (Text) | βοΈ |
| value | The value your variable should hold. | String (Text) | βοΈ |
## /var viewNo arguments required. Description:
> Show your already registered variables
## /var edit| Name | Description | Type | Required? |
| :---- | :------------------------------------ | :------------ | :-------- |
| name | Name of the variable you want to edit | String (Text) | βοΈ |
| value | The new value for your variable | String (Text) | βοΈ |
## /var delete| Name | Description | Type | Required? |
| :--- | :-------------------------------------- | :------------ | :-------- |
| name | Name of the variable you want to delete | String (Text) | βοΈ |vote
# /vote
> If you like the bot vote for it!
# π Permissions
There are 2 permission levels: `USER` and `STAFF`. They are determined by roles.
To set the role, use the settings command like so:
(yes multiple roles are allowed)
![permissions demo](https://github.com/shitcorp/TODOBOT/raw/main/assets/gifs/permissions.gif)
To remove a role from the user of staffroles array just use the `/settings remove userrole: | staffrole:` command
# β¨οΈ Custom Commands / Tags
Tags are a way to essentially build your own custom commands. Let the bot learn new tags by using the `/tag learn` command.
Delete a custom command by using the `/tag unlearn` command followed by the name of your tag.
Click to see the custom commands in action
![tag command demo video](https://github.com/shitcorp/TODOBOT/raw/main/assets/gifs/tagcmd_demo.gif)
## **Placeholders**
Click here to read about placeholders in custom commands
Placeholders are words that you can place inside your tags, that will be replaced with a certain value, when the custom command is run.
Available Placeholders:
```diff
+ => Will be rpelaced with the membercount of the current guild
+ => Will be replaced by the join position of the message author
+ => Will generate an embed with your tag message. Optional Parameters are BLUE , (make sure to include a space after the color tags) img.todo-bot.xyz/bliDnJn , img.todo-bot.xyz/bZLhbHl
+ => Will be replaced with the amount of processed tasks by the message author
+ => Will be replaced with the amount of submitted tasks by the message author
+ => Will tag the message author
+ => Will be replaced with the message author id
+ => Will be replaced with the message authors username, so in my case "MeerBiene"
+ => Will be replaced with the message authors tag, so in my case "MeerBiene#7060"
+ => Will be replaced with the guilds name where the message was sent
```**Notes:**
- All placeholders are ignorecase, so you can use them like `` or ``
- You can combine all the placeholders, so you can use the `` placeholder within an embed
## **Variables**
Click here to read about variables in custom commands
Variables are a way to store key-value pairs for your guild/server, so you can use them in your tags. This is useful if you have a discord for lets say a game server where the ip could change. To follow our example, we would create a variable called `ip` and store the ip adress:
![variable command demo](https://github.com/shitcorp/TODOBOT/raw/main/assets/gifs/vars_demo.gif)
# π Reminders
![reminder command demo](https://github.com/shitcorp/TODOBOT/raw/main/assets/gifs/reminder_cmd_demo.gif)
Note:
- **The lowest possible time is 1m (1 Minute)!**
## **Mentions**
If you want to mention certain users or roles when the reminder finished, just mention them in the reminders content when creating a new reminder.
## **Repeating reminders**
For repeating reminders, simply set the `loop` property to true when creating the reminder. **Keep in mind that the lowest possible time for repeating reminders is 1 hour!**
# π Support the developer(s)
If you like this bot and or it helps you, consider leaving a star β here on github. If you want to donate you can do so vide github sponsors. Your profile or organization will then be placed below.
**Sponsors(0)**:
# π₯ Contributors:
All contributions are welcome! Wheter its just submitting bugs and/or requesting features, or contributing to the codebase directly via pull requests.
For information on the development setup, check out the [contributing guidelines](https://github.com/shitcorp/TODOBOT/tree/main/.github/CONTRIBUTING.md).
All Contributors will be listed below:
![Contributors Display](https://badges.pufler.dev/contributors/shitcorp/TODOBOT?size=50&padding=5&bots=false)
- Julian Puffler [Github](https://github.com/puf17640) | _Code Contributor_
- Husky [Github](https://github.com/Huskydog9988) | _Code Contributor, Feedback giver_
- Oldmagic [Github](https://github.com/oldmagic) | _Code Contributor, Translator πΈπͺ_**If you are reading this, I still need help with localization(language support), if you want to help, join the [Support Discord](https://discord.gg/RuEdX5T) and ping me.**
Support Discord
π¬
Whether you need help with the bot, want to try the bot and see it in action, want to suggest new features, or just want to flame me for my bad code, join the support server with the button above.
You can also use Github Issues if you dont want to join the discord.
Theres also a `/suggest` command for sending suggestions to the support server where ppl can up or downvote them.
I also do regular votes on new features in there, so if you want to have a say in the features that will be implemented, you know what to do.