Music bot that plays music from Nicovideo, written from the scratch, without using Discord.py.
Just like its name, It plays songs from Nicovideo server. Streaming-related code is mostly from nico.py
module from my previous bot, while Discord-side API wrapper is completely written from the scratch.
It currently uses urllib
to communicate with their HTTP endpoints, websocket-client
to communicate with Gateway.
Since It doesn't use coroutine on purpose, It currently uses threading library to parallelly run websockets and heartbeats.
Additionally, installing wsaccel
package from pip is recommended, since UTF8 implementation in websocket-client
can cause bottlenecks. wsaccel solves this by providing an alternative C implementation.
Use this link to invite the test bot: "IA -ARIA ON THE PLANETES-". WARNING: This bot is being used to test codes, and can be offline/unfunctionable time to time!
Well, I just made it because I can ¯\_(ツ)_/¯
More specifically, since Discord.py
heavily depends on coroutine which coufuses the hell out of beginners and make them write a spaghetti,
I thought we might need a corountine-less library. That's why I didn't use a famous websockets
library(They stated that its purpose is to provide a convenient asynchronous API, not synchronous one.), and went with websocket-client
instead.
I'm well aware that threading in python has a disadvantage due to Global Interpreter Lock. but since there are overheads in HTTP requests, I expect performance degradation caused by GIL to be ignorable. There's no test done regarding this, but I'm planning to do one. If it appears to degrade performance, I will gradually migrate to multiprocessing library.
-
Full Gateway V9 Implementation
-
HTTP API requests
-
Voice Connection
-
Slash Command
-
User Command
-
Message Command
-
Message Components
-
Autocomplete
-
Modal
I'll happily accept any forms of contributions. but please do the followings:
-
Run tests to ensure the code is working correctly - Test suite is being prepared, so before that please do it manually.
-
Format your code properly using black or any other reformatting tools.
-
Properly comment your code following Google Python Style Guide.
PR will be merged after I'm done reviewing the changes.
You can reach out to me on:
E-mail: [email protected]
Discord: KokoseiJ#2113
Or issue tracker if you're trying to reach out regarding the bug or issue.
Please contact me if you have any questions. Thanks.