54 lines
1.3 KiB
Python
54 lines
1.3 KiB
Python
"""Example bot demonstrating voice channel playback."""
|
|
|
|
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
|
|
|
|
try:
|
|
from dotenv import load_dotenv
|
|
except ImportError: # pragma: no cover - example helper
|
|
load_dotenv = None
|
|
print("python-dotenv is not installed. Environment variables will not be loaded")
|
|
|
|
import disagreement
|
|
|
|
if load_dotenv:
|
|
load_dotenv()
|
|
|
|
_TOKEN = os.getenv("DISCORD_BOT_TOKEN")
|
|
_GUILD_ID = os.getenv("DISCORD_GUILD_ID")
|
|
_CHANNEL_ID = os.getenv("DISCORD_VOICE_CHANNEL")
|
|
|
|
if not all([_TOKEN, _GUILD_ID, _CHANNEL_ID]):
|
|
print("Missing one or more required environment variables for voice connection")
|
|
sys.exit(1)
|
|
|
|
assert _TOKEN
|
|
assert _GUILD_ID
|
|
assert _CHANNEL_ID
|
|
|
|
TOKEN = cast(str, _TOKEN)
|
|
GUILD_ID = cast(str, _GUILD_ID)
|
|
CHANNEL_ID = cast(str, _CHANNEL_ID)
|
|
|
|
|
|
async def main() -> None:
|
|
client = disagreement.Client(TOKEN)
|
|
await client.connect()
|
|
voice = await client.join_voice(GUILD_ID, CHANNEL_ID)
|
|
try:
|
|
await voice.play_file("welcome.mp3")
|
|
finally:
|
|
await voice.close()
|
|
await client.close()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
asyncio.run(main())
|