{"id":17761370,"url":"https://github.com/dgnsrekt/discorgeous","last_synced_at":"2026-03-04T07:33:03.823Z","repository":{"id":49634174,"uuid":"149043625","full_name":"dgnsrekt/Discorgeous","owner":"dgnsrekt","description":"Discord + GTTS = a discord bot that sends google text to speech voice messages to discord voice channels.","archived":false,"fork":false,"pushed_at":"2022-12-08T01:30:29.000Z","size":207,"stargazers_count":4,"open_issues_count":6,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-01T13:43:42.026Z","etag":null,"topics":["bot","discord","discord-bot","discord-py","discord-py-bot","discord-python-bot","discord-server","google-text-to-speech","gtts","music-bot","python","python3","speech","text-to-speech","tts"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dgnsrekt.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":"2018-09-16T23:12:03.000Z","updated_at":"2024-03-09T19:43:08.000Z","dependencies_parsed_at":"2023-01-24T21:30:50.643Z","dependency_job_id":null,"html_url":"https://github.com/dgnsrekt/Discorgeous","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/dgnsrekt/Discorgeous","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dgnsrekt%2FDiscorgeous","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dgnsrekt%2FDiscorgeous/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dgnsrekt%2FDiscorgeous/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dgnsrekt%2FDiscorgeous/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dgnsrekt","download_url":"https://codeload.github.com/dgnsrekt/Discorgeous/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dgnsrekt%2FDiscorgeous/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30075435,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-04T05:31:57.858Z","status":"ssl_error","status_checked_at":"2026-03-04T05:31:38.462Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["bot","discord","discord-bot","discord-py","discord-py-bot","discord-python-bot","discord-server","google-text-to-speech","gtts","music-bot","python","python3","speech","text-to-speech","tts"],"created_at":"2024-10-26T19:35:08.351Z","updated_at":"2026-03-04T07:33:03.783Z","avatar_url":"https://github.com/dgnsrekt.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Discorgeous\nDiscord + GTTS = a discord bot that sends google text to speech voice messages to discord voice channels.\n\n\n[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/ambv/black)\n```\n    ____   _\n   / __ \\ (_)_____ _____ ____   _____ ____ _ ___   ____   __  __ _____\n  / / / // // ___// ___// __ \\ / ___// __ `// _ \\ / __ \\ / / / // ___/\n / /_/ // /(__  )/ /__ / /_/ // /   / /_/ //  __// /_/ // /_/ /(__  )\n/_____//_//____/ \\___/ \\____//_/    \\__, / \\___/ \\____/ \\__,_//____/\n                                   /____/\n\nUsage: discorgeous [OPTIONS] COMMAND [ARGS]...\n\nOptions:\n  --help  Show this message and exit.\n\nCommands:\n  client      Send a single message to server.\n  client-ssh  ssh client not implemented.\n  repl        Repl messages to server.\n  server      Runs the discord bot server.\n  tester      Sends test song to server.\n```\n### REQUIRES\n\nOn Linux environments, installing discord.py[voice] requires getting the following dependencies:\n```\napt install libffi-dev libnacl-dev\n```\n\n### QUICK START\n\n#### Install\n```\ngit clone https://github.com/dgnsrekt/Discorgeous.git\ncd Discorgeous\npip3 install -e .\n```\n#### Run Single Server\n```\ndiscorgeous server --single --port 5555 --token {discord_bot_token} --channel {discord_channel_id}\n```\n#### Run REPL Client\n```\ndiscorgeous repl --port 5555\n```\n#### Run Test Song\n```\ndiscorgeous tester --port 5555\n```\n#### Run Muliple Servers\nFirst edit the server_config.toml file in the Discorgeous/config folder.\nAdd as many servers as you like.\n```\n[ServerOne] \u003c- Whatever name you want.\nCHANNEL_ID = \"000000000000000000\" \u003c- {discord_channel_id}\nVOICE_TOKEN = \"00000000000000000000000000000000000000000000000000000000000\" \u003c- {discord_bot_token}\nIP = \"0.0.0.0\"\nPORT = \"6666\" \u003c- Make sure each server has a different port.\n\n[ServerTwo] \u003c- Whatever name you want.\nCHANNEL_ID = \"111111111111111111\" \u003c- {discord_channel_id}\nVOICE_TOKEN = \"11111111111111111111111111111111111111111111111111111111111\" \u003c- {discord_bot_token}\nIP = \"0.0.0.0\"\nPORT = \"5555\" \u003c- Make sure each server has a different port.\n```\nRun server with configuration section name\n```\ndiscorgeous server --config ServerOne --config ServerTwo\n```\nRun in seperate tmux instances\n```\ndiscorgeous server --config ServerOne --config ServerTwo --tmux\n```\n### Example Client Script\nThe MinuteNotificationClient sends a current time message to a discorgeous server every minute.\n```\nfrom discorgeous import Client\nfrom datetime import datetime\nimport asyncio\nimport sys\n\n\nclass MinuteNotificationClient(Client):\n    def __init__(self, *, ip, port, sleep_interval=60):\n        super().__init__(ip=ip, port=port)\n        self.sleep_interval = sleep_interval\n\n    async def timeupdate(self, *, loop):\n        while True:\n            current_time = datetime.now().time()\n            hour = current_time.hour\n            minute = current_time.minute\n            message = f\"The current time is {hour} {minute}.\"\n            await self.handler(message, loop)\n            await asyncio.sleep(self.sleep_interval)\n\n    def start(self):\n        loop = asyncio.get_event_loop()\n        time_coro = self.timeupdate(loop=loop)\n        loop.run_until_complete(time_coro)\n\n        try:\n            loop.run_forever()\n        except KeyboardInterrupt as e:\n            print(e)\n        finally:\n            loop.close()\n\n\nMNC = MinuteNotificationClient(ip=\"localhost\", port=6666, sleep_interval=60)\n\ntry:\n    MNC.start()\nexcept KeyboardInterrupt as e:\n    print(str(e))\nexcept Exception as e:\n    print(str(e))\nfinally:\n    sys.exit()\n\n```\n\n### TODO\n* Client over SSH\n* Documentation\n* Tests\n* Config files in user path.\n* Update Requirements.\n* Link to discord voice bot token creation guide.\n* Add port/name check to server config to make sure all ports and names are unique.\n* Add non-async version of the client.\n* Dump Client config.\n* Example Random lyrics/quotes.\n* client.start() method should take a list of coroutines, add them to a loop, then start.\n* Py package\n* Update for discord.py 1.0\n\n### Contact\n* Twitter = Telegram = Discord = @dgnsrekt\n* Email = dgnsrekt@pm.me\n\n### License\nThis code is licensed under the MIT License.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdgnsrekt%2Fdiscorgeous","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdgnsrekt%2Fdiscorgeous","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdgnsrekt%2Fdiscorgeous/lists"}