Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8705

discordjs/rpcを使ってPCのDiscordをスマホからミュートにしたい

$
0
0

動機

コロナ渦の大学生なので,ずっと家にいて暇です.常に仲間とDiscordのVCをつないで作業をしています.

ふとトイレに行くときに,PCのマイクをミュートにし忘れることがあります.
イヤホンはBluetoothなので音は聞こえているのですが,トイレとかキッチンに行った時とかにミュートにし忘れることがあって不便です.
そこで,離れたところからスマホでPCのDiscordをミュートにできたらと思っていたのですが,DiscordのRPCなAPIで実現できそうだったので試してみました.

環境

  • ThinkPad X270
  • Arch Linux
  • Node.js v14.16.0
  • discord-rpc v3.2.0
  • express
  • Discord

Discordのアプリを,Node.jsで動くエージェントサーバーで操作する感じです.
Node.jsのサーバー上で,ExpressによるWebサーバーとDiscordRPCクライアントが走っています.
Webサーバーがリクエストを受け取ったらDiscordのミュートをトグルする,といった形です.

準備

Discordの
- ClientID
- ClientSecret
- AccessToken

が必要になります.
AccessTokenのScopesについては,私の場合は,
- rpc
- rpc.api
- identify
のトークンを発行しました.

ソース

constDiscordRPC=require('discord-rpc')constexpress=require('express')constclientId='CLIENT_ID'constclientSecret='CLIENT_SECRET'if(process.argv.length<=2){console.error('You must specify access_token')return}constaccessToken=process.argv[2]constrpc=newDiscordRPC.Client({transport:'ipc'});functionstartWebServer(){constapp=express()constport=3000app.get('/',(req,res)=>{rpc.getVoiceSettings().then((e)=>{returnrpc.setVoiceSettings({mute:!e.mute})}).then(()=>{res.sendStatus(200)})})app.listen(port,'0.0.0.0',()=>{console.log(`Discord Muter listening at http://localhost:${port}`)})}rpc.on('ready',()=>{startWebServer()});rpc.login({clientId,scopes:['rpc','rpc.api','identify'],accessToken}).catch(console.error);

やってみよう

Discordのアプリを開いて,ボイスチャットに入っておきます.
$ node index.js {アクセストークン}でサーバーを起動します.
その状態で,普通に,PCのブラウザから,http://localhost:3000/にアクセスすると,ミュートになります.
もう一度アクセスでミュート解除です.

私はTaskerでウィジェット化しています.

他にもRPCにはいろいろなAPIが用意されていそうなので,時間があるときに探してみたいと思います!!


Viewing all articles
Browse latest Browse all 8705

Trending Articles