62 lines
1.5 KiB
Python
62 lines
1.5 KiB
Python
"""Example bot demonstrating VoiceClient usage."""
|
|
|
|
import os
|
|
import asyncio
|
|
import sys
|
|
|
|
# If running from the examples directory
|
|
if os.path.join(os.getcwd(), "examples") == os.path.dirname(os.path.abspath(__file__)):
|
|
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), "..")))
|
|
|
|
from typing import cast
|
|
|
|
from dotenv import load_dotenv
|
|
|
|
import disagreement
|
|
|
|
load_dotenv()
|
|
|
|
_VOICE_ENDPOINT = os.getenv("DISCORD_VOICE_ENDPOINT")
|
|
_VOICE_TOKEN = os.getenv("DISCORD_VOICE_TOKEN")
|
|
_VOICE_SESSION_ID = os.getenv("DISCORD_SESSION_ID")
|
|
_GUILD_ID = os.getenv("DISCORD_GUILD_ID")
|
|
_USER_ID = os.getenv("DISCORD_USER_ID")
|
|
|
|
if not all([_VOICE_ENDPOINT, _VOICE_TOKEN, _VOICE_SESSION_ID, _GUILD_ID, _USER_ID]):
|
|
print("Missing one or more required environment variables for voice connection")
|
|
sys.exit(1)
|
|
|
|
assert _VOICE_ENDPOINT
|
|
assert _VOICE_TOKEN
|
|
assert _VOICE_SESSION_ID
|
|
assert _GUILD_ID
|
|
assert _USER_ID
|
|
|
|
VOICE_ENDPOINT = cast(str, _VOICE_ENDPOINT)
|
|
VOICE_TOKEN = cast(str, _VOICE_TOKEN)
|
|
VOICE_SESSION_ID = cast(str, _VOICE_SESSION_ID)
|
|
GUILD_ID = int(cast(str, _GUILD_ID))
|
|
USER_ID = int(cast(str, _USER_ID))
|
|
|
|
|
|
async def main() -> None:
|
|
vc = disagreement.VoiceClient(
|
|
VOICE_ENDPOINT,
|
|
VOICE_SESSION_ID,
|
|
VOICE_TOKEN,
|
|
GUILD_ID,
|
|
USER_ID,
|
|
)
|
|
await vc.connect()
|
|
|
|
try:
|
|
# Send silence frame as an example
|
|
await vc.send_audio_frame(b"\xf8\xff\xfe")
|
|
await asyncio.sleep(1)
|
|
finally:
|
|
await vc.close()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
asyncio.run(main())
|