# Discord的高级玩法

By [DbgKingg](https://paragraph.com/@dbgkingg) · 2022-06-04

---

最近市场偏冷，除了冲土狗还是在冲土狗，满屏的哥布林实在是看厌倦了，还不如好好学习一下其他知识。Discord对于玩NFT的人肯定是再熟悉不过了，今天我们就学习一下如何刚好地使用Discord！本文章会简单介绍一下自己总结的小技巧、如何魔改DC、最后会简单演示如何写一个DC的小机器人，实现自动化操作。

> p.s. 简单的如何加入服务器，如何验证、聊天什么的就不讲了，相信使用了几天很快就能上手。

先玩转Discord内部功能
==============

小技巧学习
-----

这些小技巧玩久了的人基本都懂，但是还是写下来希望可以帮助到大家~

### 通知和隐私设定

这个是我现在每次新加入一个服务器的基操了，右键点击”通知设定“，根据你的需要选择。一般我加进去纯占个茅坑的服务器我都是直接选”无通知“的，这样子就不会一直听到Discord的滴滴声了。

![DC右键菜单](https://storage.googleapis.com/papyrus_images/e9d2d495bf546aab26893c7bced9cfc37e71e3ddfc08a205778ea2c5e7598831.png)

DC右键菜单

除此之外，一定要记得点击隐私设置，把可以被私信的权限给关了。加入NFT社区多了的一定体验过，发售前被骗子私信链接的经历。千万不要相信任何私信你的人！！千万不要相信任何私信你的人！！千万不要相信任何私信你的人！！ 所以虽然繁琐了点，还是把它关了吧。

（Discord并不支持用户或者服务器默认把这个选项关了，所以每次都得手动）

![隐私设置](https://storage.googleapis.com/papyrus_images/c665950c068b8357f8e18888436aff73ffb7d3879076a9ab78502b934d029337.png)

隐私设置

p.s. 经指正，现在DC是支持用户默认不允许别人私信的，具体步骤：用户设置 > 隐私与安全 > 服务器默认隐私设置 > 允许服务器成员直接向您发起私聊 →关闭

（感谢大佬指正）

[https://twitter.com/ShirouArtoria](https://twitter.com/ShirouArtoria)

有点可惜的是暂时还没有在服务器设置里面发现有这个选项，希望DC能尽快加入这个功能

### 分文件夹

还有人不知道左边的频道列表可以分文件夹的吗？？ 只需要长按服务器图标，把它拖到其他服务器上面就可以分文件夹了。多多分类，频道多了方便管理，看着也舒服。右键文件夹甚至可以给他们分别命名和自定义文件夹颜色。

![服务器列表](https://storage.googleapis.com/papyrus_images/bc95caeb2bcb5d6b34ea6f9f5c3b19bdc49d885a3c97023a917483e9c7815f5f.png)

服务器列表

实用快捷键学习
-------

由于Discord是使用Electron开发的，所以个人认为在使用体验方面不是很好，经常会有各种卡顿。这时候学会几个实用快捷键就能节省我们很多时间。

### 快速查看快捷键列表

第一个得学习的快捷键就是打开快捷键列表（搁这套娃呢？），虽然看起来页面没有汉化完整，不过问题不大，学习最实用的就好，需要的时候再回来参照这个表。

Mac：`command` + `/`

Windows： `control` + `/`

![快捷键列表界面](https://storage.googleapis.com/papyrus_images/c510235796cb10b6d9b0a16e94c694005455e4dd27f10a6ee86f578a0e71e9d5.png)

快捷键列表界面

隐藏小彩蛋lol：

*   看到右上角的上下左右箭头了吗，你在键盘按这些按钮会发出声音哦（好无聊）
    
*   看到右下角的“RAGING DEMON”了吗？按顺序按下 `H` `H` `->` `N` `K` （稍微看了一下似乎是已经存在了超过五年的复活节彩蛋，最后出现的“天”字也不知道是啥意思）
    

[https://www.reddit.com/r/discordapp/comments/643bdm/the\_raging\_demon/](https://www.reddit.com/r/discordapp/comments/643bdm/the_raging_demon/)

这里可以预览到彩蛋的动图

### 全局搜索

加入的社区或者是加的好友一多，基本上就很难找到他们了（特别对于我来说，加入服务器满了，找一个服务器得找5分钟）。这是我使用最多的快捷键，多多使用这个全局搜索，减少上下翻找的时间。按下快捷键就会弹出一个可以输入的搜索窗口。

使用小技巧：

*   搜索用户时先输入：@
    
*   搜索文字频道时先输入：#
    
*   搜索语音频道时先输入：!
    
*   搜索服务器时先输入：\*
    

Mac: `command` + `k`

Windows： `control` + `k`

![全局搜索](https://storage.googleapis.com/papyrus_images/9363cc0e43a010b32250f1febe978de2cdad5b388959a8111961e472166dc659.png)

全局搜索

### 快速全服务器已读消息

我猜你已经厌倦了整天看到服务器列表内一个一个红色的数字又或者是不停亮起的频道，实话说确实很烦，但是自己又没有时间和精力一个一个点开去看。这个快捷键可以帮你在当前服务器把所有频道的所有消息的标记已读。非常地简单暴力，不过谨慎使用就是啦，毕竟某一些频道的通知还是比较重要的。

Windows: `shift` + `esc`

Mac: `shift` + `esc`

### 快捷打开收件箱

记得要时常看看收件箱呀！！毕竟我们没办法一直守着Discord看消息，偶尔打开收件箱查看一下提及你的消息说不定会有意外收获，切记不要因此错过重要信息。

Mac: `command` + `i`

Windows： `control` + `i`

虽然还有很多很多的快捷键可以用，但是这些基本就是我最常用的几个，分享给大家~

开发者模式
-----

如名字一样，我们可以通过打开Discord的开发者模式可以让我们获取到服务器、频道、用户的内部ID。有什么用？ 除了我们在开发Discord Bot时候能准确定位某个用户之外，其实我们还能复制用户的搜索他们的聊天记录，这样子就算是用户离开了服务器还是能搜索到。

对于一般用户大概用处不算大，但是对于项目方，如果需要搜集信息（比如搜集白名单地址），搜集了用户ID就代表了永远都能找到这个用户（因为用户可能会更改名字）。

### 如何开启开发者模式？

*   打开设置页面（在Discord界面左下角）
    

![设置按钮](https://storage.googleapis.com/papyrus_images/3ec3b81c60a34b151b511104e9ce1604beff79462397f1595d0a2fae873df3ff.png)

设置按钮

*   在左边列表选择高级设置，开启“开发者模式”即可
    

![设置界面](https://storage.googleapis.com/papyrus_images/e726037a2e07d6c6be3e9e8f7042bf4f11cc13741630ad9bcc20c32b0a383b31.png)

设置界面

*   开启后，我们右键服务器、频道又或者是人名之后就能复制他们的ID啦！
    

![新增了辅助ID的右键界面](https://storage.googleapis.com/papyrus_images/4c514e93d03a890e7a1367459b6000cd38437ec9cc813eedd6d9ab1d07202d03.png)

新增了辅助ID的右键界面

我们可以直接在右上角的搜索框粘贴这个ID，Discord就会帮你找到对应的用户。

![服务器内搜索界面](https://storage.googleapis.com/papyrus_images/a017588485a6d5e9744ece2e8f76091ee851e612fdf57f41f108a98e45c30e05.png)

服务器内搜索界面

说到搜索，不要忘记了Discord的搜索功能内置了非常多的选项，我们在搜索的时候必须多加运用实现精准搜索，在这里就不多做介绍了。

![搜索选项](https://storage.googleapis.com/papyrus_images/9c385d7b083e12d0f5b38269a57309d13ccde0c289d2f65b00b5f36610b99ac0.png)

搜索选项

开始魔改Discord
===========

熟悉了Discord的App后，真的只能说是中规中矩，很多希望有的功能都没有，所以这就给各位推荐一款工具让我们可以深度自定义Discird，它就是：[https://betterdiscord.app/](https://betterdiscord.app/) 。翻译过来就是更好的Discord嘛，安装它之后为我们带来两个主要的功能：更换主题、安装插件。无论是Windows还是Mac，只需要在官网下载安装之后即可使用。

p.s. Better Discord不是官方出品，所以还是会有风险，使用前请好好斟酌一下

更换主题
----

我们可以在，Better Discord的主题页面（[https://betterdiscord.app/themes](https://betterdiscord.app/themes)）浏览你喜欢的主题，选择非常多，简直就是眼花缭乱。

![主题页面](https://storage.googleapis.com/papyrus_images/eadcf3a828dda4d596ef9912bd61b59ceca89ba94e2ccefe1a7e8f39ff3952e4.png)

主题页面

选择自己看着顺眼的，点击下载主题之后。我们打开设置页面，可以看到我们的Discord新增了一个专门的Better Discord的专区，点击”主题“，再点击”打开主题文件夹“，我下载的文件拷贝进去之后就会在Discord内显示出来。之后只需要启用它即可，非常简单暴力！

![](https://storage.googleapis.com/papyrus_images/f8ded0ed136b81a6ce7bcf6fa84019bf641ce35f266033ccd91a8be5c3208aac.png)

如果这些推荐的主题都不适合，而你又是一个css高手，那么恭喜你，你甚至还可以使用css自定义Discord外观。只需要点击”自定义样式“就可以对外观进行更改，这里我就不演示了（因为我css也不是很厉害）。

插件系统
----

看完了主题，我们来看看插件系统吧~ 同样的，在官方的页面（[https://betterdiscord.app/plugins](https://betterdiscord.app/plugins)）就可以浏览到所有官方推荐的插件，在这里也推荐几个非常实用的插件。

和安装主题类似，只需要在左边的菜单栏点击“插件”，然后点击”打开插件文件夹“把下载的文件放进去之后，把它启用即可。

![插件系统](https://storage.googleapis.com/papyrus_images/64a064e5e84b6d82c7faea82b163cc7086de90e50c17cac2ea78190538971307.png)

插件系统

### 翻译插件（**Translator**）

非常多NFT的社区还是以英文为主导，很多时候一些消息不一定能理解，这时候如果Discord能自带翻译就好了。安装这款插件之后允许我们把别人发的信息翻译成中文（或者其他语言），甚至把自己发的消息也翻译成别的语言，简直是必装神器了！

![新增了翻译功能的右键菜单](https://storage.googleapis.com/papyrus_images/c46915b1505ee16dcf88c576a9f3f1ae36179e685f877a9883260e681cf43fd9.png)

新增了翻译功能的右键菜单

在需要翻译的消息点击右键，再次点击翻译消息即可。

![新增了翻译功能的文本框](https://storage.googleapis.com/papyrus_images/69d9514f2bddf55dc962203fe7485093c6408e9d920479e56fd15089ac03f17c.png)

新增了翻译功能的文本框

如果需要翻译自己的消息，可以在消息框点击这个翻译的按钮，选择好翻译目标语言点击确认就好了。

下载链接：[https://betterdiscord.app/plugin/Translator](https://betterdiscord.app/plugin/Translator)

### 免费emoji （**FreeEmojis**）

没有开Nitro（会员）的朋友一定深有感受，看着表情列表一片漆黑没法使用，非常地尴尬。因为Discord默认是不允许普通用户发动态gif表情包的，这个插件自动帮我们把emoji转化为动图链接，这样子大家就都能发动图了。（注意有一些服务器的某些频道时不允许发链接的或者不会自动把链接图片显示出来，但是大部分频道还是能用的）

下载链接：[https://betterdiscord.app/plugin/FreeEmojis](https://betterdiscord.app/plugin/FreeEmojis)

### 隐藏不能使用的表情（**HideDisabledEmojis**）

和上面的插件解决的问题类似，如果你根本不需要/想看见这些不能使用的表情的话可以安装这款插件，自动帮你隐藏起来。

下载链接：[https://betterdiscord.app/plugin/HideDisabledEmojis](https://betterdiscord.app/plugin/HideDisabledEmojis)

还有很多很多的插件可以使用，篇幅问题这次就只介绍这几个，多多浏览插件页面会发现你需要的一款~

开发自动化机器人
========

学习了这么多小技巧，不如我们更进一步怎么样？（不懂代码的可以直接跳过）

前面有提到Discord实际上是一个Electron开发的app，换句话说这个app实际就是一个网站来的（这点如果你使用过Discord网页版上就能察觉到）。Discord实际上是使用Websocket保持与服务器的持久连接，一直接收信息推送，这也是为什么我们能非常实时地看到消息的原因。那么我们可不可以假装自己是客户端或者是网页端连接到他们的websocket获取信息，甚至是自动化一些东西呢？答案当然是可以啦哈哈

p.s. Self Bot是被Discord明令禁止的行为，请慎重使用这个功能，不然很大可能会被封号。

开始行动
----

在这里用Node.js为例，我们首先需要找到客户端使用的token来让我们可以链接到websocket。

### 获取token

我们可以在客户端或者网页版打开开发者工具。

在Mac的快捷键为 `command` + `shift` + `i` ，在Windows客户端亲测 `control` + `shift` + `i` 打不开，所以只能通过网页版了。

![开发者工具](https://storage.googleapis.com/papyrus_images/99556ed6a5f1debabd14e5a2db83aae74606c273c1063f49e435d05182106491.png)

开发者工具

打开之后点击”Network”或者“网络”，这时候我们需要在某一个频道随便发一个消息。这时候下面的列表会出现一个名字为messages的一行，我们点击选中它。

![网络](https://storage.googleapis.com/papyrus_images/d7bd933e283beba5ded2c9c5a77c4267a4115ead32e32d06801e82668115c61e.png)

网络

选择Headers，然后向下拉直至我们找到一个名字为“authorizations”的东东，我们复制冒号后面那一串乱码的文字，这个就是我们的token。

![寻找token](https://storage.googleapis.com/papyrus_images/01555139867dba2fd8e3242f3c7b3191a1fe67cce59f283cf491c94076d05051.png)

寻找token

### 开始打代码

首先请确保有安装Node.js，我们需要先安装websocket的包。

在文件夹根目录运行：`npm install ws`

接下来新建一个文件夹并新建一个 `xxx.js` 文件（啥名字都行），我们以下面的代码为例，大家可以根据自己的需求做更改。简单来说我们就是在模拟自己是一个浏览器连接到Discord的websocket，运行程序后我们就可以不断接收到新消息的推送。

    const WebSocket = require("ws");
    const ws = new WebSocket("wss://gateway.discord.gg/?v=6&encoding=json");
    
    const payload = {
        op: 2,
        d: {
          token: '这里粘贴你获取到的token',
          properties: {
            $os: "linux",
            $browser: "chrome",
            $device: "chrome",
          },
        },
      };
    
    ws.on("open", function open() {
      ws.send(JSON.stringify(payload));
    });
    
    ws.on("message", function incoming(data) {
      let payload = JSON.parse(data);
    
      const { t, event, op, d } = payload;
    
      switch (op) {
        case 10:
          const { heartbeat_interval } = d;
          interval = heartbeat(heartbeat_interval);
          break;
      }
    
      switch (t) {
        case "MESSAGE_CREATE":
          // 接受到新发的信息
          console.log(d);
      }
    });
    
    const heartbeat = (ms) => {
      return setInterval(() => {
        ws.send(JSON.stringify({ op: 1, d: null }));
      }, ms);
    };
    

文件保存好，我们命令行运行 `node xxx.js` 就可以看到源源不断的消息的推送了，我们可以在接受的消息里面获取到消息的内容、作者的信息、发布时间、引用的消息内容等等的信息。

获取到消息推送，我们可以过滤只获取自己关心的消息，比如某个人发布的消息，或是某个频道的消息。获取到消息之后我们就可以开始自动化一些平时需要手动操作的东西了，比如回复信息或者给消息点赞等等的功能都是可以实现的，在这里就只给大家指一个方向，剩下的就看大家的领悟和想象力了。

（上面的代码例子除了websocket没有使用其他任何包或者插件，但是据了解老版本的Discord.js还有Discord.py是支持self bot的，感兴趣的朋友可以自行去找找）

> 再次提醒大家self bot是Discord禁止的行为，本篇文章仅仅用作学习用途，请不要用来做任何不好的事情！！！

好啦，本篇文章就到此为止，不得不说要玩转Discord还是很有学问的，我也仅仅是领略一点皮毛而已，希望本文章对大家有点帮助，感谢大家。大家也可以分享一下你们试用DC的心得还有小技巧，让我也学习学习哈哈

作者：

[https://twitter.com/DbgKinggg](https://twitter.com/DbgKinggg)

来自GohanGo!!：

[https://twitter.com/GohanGoNFT](https://twitter.com/GohanGoNFT)

[https://discord.com/invite/GSgmWYQUPD](https://discord.com/invite/GSgmWYQUPD)

---

*Originally published on [DbgKingg](https://paragraph.com/@dbgkingg/discord)*
