LoginSignup
12
11

More than 3 years have passed since last update.

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

Last updated at Posted at 2021-03-21

動機

コロナ渦の大学生なので,ずっと家にいて暇です.常に仲間と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
のトークンを発行しました.

ソース

const DiscordRPC = require('discord-rpc')
const express = require('express')

const clientId = 'CLIENT_ID'
const clientSecret = 'CLIENT_SECRET'

if(process.argv.length <= 2) {
  console.error('You must specify access_token')
  return
}
const accessToken = process.argv[2]

const rpc = new DiscordRPC.Client({ transport: 'ipc' });

function startWebServer() {
  const app = express()
  const port = 3000

  app.get('/', (req, res) => {
    rpc.getVoiceSettings().then((e) => {
      return rpc.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が用意されていそうなので,時間があるときに探してみたいと思います!!

12
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
11