Code Monkey home page Code Monkey logo

oasobidiscordbot's Introduction

OasobiDiscordBot

Overview

music bot of discord for our server.

music player

Supported sources

  • YouTube

Not supported play from local files.

Commands

musicplayer: Send the control panel for the music player.

Requirement

.NET 6.0

Dll file

  • libsodium.dll
  • libopus.dll

download from Voice binaries

Third party program

  • FFmpeg (5.1.2-full_build)

ffmpeg

add ffmpeg.exe to the environment path.

Others

  • Bot token

Discord Bot documents

  • YouTube api

YouTube api documents

SetUp

  1. Clone this code for your local folder.
  2. Open the solution by Visual Studio 2022.
  3. Specify OasobiDiscordBot as the startup project.
  4. Build
  5. libsodium.dll and libopus.dll move folder with OasobiDiscordBot.exe and rename libopus.dll for opus.dll.
  6. Run!
  7. In settings tab, set discord token and YouTube API.

note: Restart application when update settings.

License

OasobiDiscordBot is under the MIT license

oasobidiscordbot's People

Contributors

archangel913 avatar autumnsky1010 avatar

Stargazers

 avatar  avatar

Watchers

 avatar

oasobidiscordbot's Issues

Entityの作成

概要

YoutubeVideo , YoutubePlaylist , Music の3つのクラスを実装する。

YoutubeVideo

Youtube APIからのリクエストのデシリアイズに使用。ビデオを指定されたときに使用。
ドキュメント

YoutubePlaylist

Youtube APIからのリクエストのデシリアイズに使用。プレイリストを指定されたときに使用。
ドキュメント

上記2つはこちらを参考に。

Music

アプリケーション内で楽曲データを扱う。
プロパティー または フィールドは以下

  • Id : uint型。 ID。追加順にインクリメントされていく。

  • Title : string型。動画タイトル。

  • Url : string型。動画のURL (http://youtube.com~)

    プロパティー または フィールドは書き換えを行わないためゲッターのみ。

実装箇所

プロジェクト : Domain
名前空間 Domain.Entities 以下。
YoutubeVideo , YoutubePlaylistMusic の名前空間分けは任意。

インターフェース

無し

テスト環境の作成

目的

エンコード済みの音楽データを保持するクラスの検証のため
Domain,Application層を実装しやすいようにUI,Infrastructure層を作成

目標

入力されたURLの音楽が最後まで再生される。
ただし、キューの保持や曲の操作は考慮しない。

実装方針

UI層

コンソール画面からURLを入力。

InfraStructure層

音楽の出力 → 本来出力先はDiscordだから。

曲の取得 → ビデオライブラリに依存

テスト用なのでこのチケットのブランチは他のブランチにマージしないこと

ミュージックキューの作成

概要

再生中と再生待ちの Music を保持、管理するクラス。
シャッフル、ループ再生の管理もこのクラスの責務とします。

実装箇所

プロジェクト : Domain
名前空間 Domain.MusicQueue 以下。

インターフェース

外部から利用されるメソッドです。
場合によってプロパティーへ変更しても問題ありません。

public Music getNow();
public void ChangeLoopState();
public void Next();
public IReadOnlyList<Music> GetReadOnlyQueue();
public void Add(Music music)
public void SwitchShuffleState()

private、protectedアクセサーへの追加は制限しません。

仕様

public Music getNow();

現在再生中の楽曲を取得します。
再生開始時に Music を取得するときに呼ばれる想定です。

public void ChangeLoopState();

ループ再生の変更を行います。
呼ぶたびに ループ無し → 全曲ループ → 一曲ループ → ループ無し と状態が変わります。
ループ再生処理の変更をする際にこのメソッドが呼ばれる想定です。

public void Next();

再生待ちと現在再生中の Music を更新します。
戻り値は void です。このメソッドでは再生待ちと現在再生中の Music の更新のみが責務です。
現在再生中のMusicgetNow() メソッドで取得します。
楽曲の再生終了時、またはスキップ時にこのメソッドが呼ばれる想定です。

  • ループ無しの場合
    再生待ち先頭の Music を現在再生中へ。
  • 全曲ループの場合
    再生待ち先頭の Music を現在再生中へ。
    現在再生中の Music を再生待ち最後尾へ追加。
  • 一曲ループの場合
    処理なし。

public IReadOnlyList GetReadOnlyQueue();

読み取り専用のMusic のListを返します。
再生待ちを表示する際にこのメソッドが呼ばれる想定です。

public void Add(Music music);

再生待ちの最後尾に Music を追加するメソッドです。
楽曲追加時にこのメソッドが呼ばれる想定です。

public void SwitchShuffleState();

シャッフル再生を切り替えるメソッドです。

  • シャッフルOFFの時
    再生待ちをシャッフル
  • シャッフルONの時
    シャッフル解除。追加された順に戻す。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.