{"id":26757005,"url":"https://github.com/effectai/dao-discord-bot","last_synced_at":"2025-04-15T04:05:33.835Z","repository":{"id":41826899,"uuid":"321292909","full_name":"effectai/dao-discord-bot","owner":"effectai","description":"Discord bot with EOS account verification feature.","archived":false,"fork":false,"pushed_at":"2022-04-27T20:39:06.000Z","size":104,"stargazers_count":5,"open_issues_count":1,"forks_count":1,"subscribers_count":5,"default_branch":"main","last_synced_at":"2023-03-01T16:23:26.608Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/effectai.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-12-14T09:13:00.000Z","updated_at":"2023-01-19T20:36:33.000Z","dependencies_parsed_at":"2022-08-11T18:40:37.894Z","dependency_job_id":null,"html_url":"https://github.com/effectai/dao-discord-bot","commit_stats":null,"previous_names":[],"tags_count":null,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/effectai%2Fdao-discord-bot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/effectai%2Fdao-discord-bot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/effectai%2Fdao-discord-bot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/effectai%2Fdao-discord-bot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/effectai","download_url":"https://codeload.github.com/effectai/dao-discord-bot/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246054606,"owners_count":20716398,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-03-28T15:34:16.518Z","updated_at":"2025-03-28T15:34:31.660Z","avatar_url":"https://github.com/effectai.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"## 🤖 Effect DAO Discord Bot\r\n[![contributions welcome](https://img.shields.io/badge/contributions-welcome-brightgreen.svg?style=flat)](https://github.com/effectai/dao-discord-bot/issues) ![GitHub Pipenv locked Python version](https://img.shields.io/github/pipenv/locked/python-version/effectai/dao-discord-bot)\r\n\r\n➡️ \u003cb\u003e\u003ca href=\"https://discord.gg/hM3237cYXP\"\u003eJoin the Effect DAO Discord!\u003c/a\u003e\u003c/b\u003e\r\n\r\n### Features 🦾\r\nThe Effect DAO Discord bot is being used to connect discord accounts to EOS blockchain account.\r\nIt can also show DAO account details, Proposals overviews and details of proposals.\r\nFurthermore, it can show you the following reminders:\r\n- when the voting duration is almost ending\r\n- when a proposal gets created\r\n- when a cycle gets created \r\n- when the weekly DAO call is happening.\r\n\r\nThe bot is restricted to talk in the #bot-spam channel or DM only. \r\nVerification can only be done through DM.\r\n\r\nThe bot needs the following permissions to run appropiately.\r\n![Screenshot from 2021-09-24 12-03-24](https://user-images.githubusercontent.com/24189525/134658560-a769e4df-dd4d-42ee-972b-03932e85c88e.png)\r\n\r\n#### Proposals\r\n- `!proposals list` List of active/pending proposals.\r\n- `!proposals find \u003cid\u003e` Retrieve the proposal with the given id and then show the details of it.\r\n- `!proposals create_channel \u003cid\u003e` With the given id, retrieve the proposal and show it's details on the freshly created text channel.\r\n\r\n\u003e NOTE: the `!proposals create_channel` command can only be used by members who are part of the EFFECT.AI Team.\r\n\r\n#### DAO\r\n- `!dao account \u003caccount_name\u003e` Retrieve details of the DAO account, if no account_name given, it will retrieve the details of the account that is linked to the discord user.\r\n- `!dao update \u003caccount_name\u003e` Update the account_name that is connected to your Discord account.\r\n- `!dao unlink` Unlink the current DAO account.\r\n\r\n#### Cycle\r\n- `!cycle` Show cycle details such as what the current cycle is, when the cycle started, how long it takes until it ends and when the voting duration ends.\r\n\r\n#### Reminders\r\nThere are a couple of reminders that the bot runs:\r\n- `dao_call_notify` is a **cron** notifier which runs every wednesday 5 PM (UTC +02:00) because of the weekly DAO call.\r\n- `dao_vote_notify` is a **date** notifier which runs on a specific date, for this notifier it runs on the date 1 day prior before that the vote_duration ends.\r\n- `dao_new_cycle_notify` is an **interval** notifier which runs after an amount of time. Now it runs after 1 hour, repeatedly.\r\n- `dao_new_proposals_notify` is an **interval** is an **interval** notifier which runs after an amount of time. Now it runs after 1 hour, repeatedly.\r\n\r\nWith the following command you can reschedule the time of a notifier:\r\n- `!reschedule \u003ctrigger\u003e \u003cjob_id\u003e \u003cargs\u003e`\r\n\r\nBased on the `trigger`, you will have to pass different arguments (`args`).\r\n\r\n- `cron`\r\n- `date`\r\n- `interval`\r\n\r\nwith `cron`, you can only pass the day_of_week, hour and minute. For example. `!reschedule cron dao_call_notify wednesday 15 10`\r\n\r\nwith `date`, you can onlly pass a datetime, which is in the following format, `YYYY-MM-DD HH:mm:ssZ` (`1970-01-01 01:02:03+00:00`)\r\n\r\nwith `interval` you can only pass arguments in the following order; weeks, days, hours, minutes and seconds. For example, `!reschedule interval dao_new_cycle_notify 0 0 1 0 0` which translates to `0 weeks, 0 days, 1 hour, 0 minutes, 0 seconds` so that means the notifier will run after 1 hour repeatedly.\r\n\r\n\u003e NOTE: The `!reschedule` command can only be used by members of the Effect.AI team.\r\n\r\n#### Other commands\r\n- `!ping` Pong!\r\n\r\n### Running the bot\r\nThe bot creates a `db.json` file, make sure this file is persistent. \r\nMake sure the environment variable `DISCORD_BOT_TOKEN` is set to your token.\r\nAlso make sure if you running the bot in your own local discord server, to change the default variable ids to the one of your server.\r\nInstall the requirements and run `run.py`.\r\n\r\n```bash\r\n# Or run it with Docker\r\ndocker-compose up -d --build\r\n```\r\n\r\n### Troubleshooting\r\nIf you have issues you can create an issue in this repo, or \u003ca href=\"https://discord.gg/hM3237cYXP\"\u003ejoin us on Discord\u003c/a\u003e. \r\nIf you encounter issues with connecting to the Discord API make sure your token environment variable is set correctly. \r\nIf you have issues with the TinyDB location, change the location of the database file in `run.py`.\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feffectai%2Fdao-discord-bot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feffectai%2Fdao-discord-bot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feffectai%2Fdao-discord-bot/lists"}