最近创立了一个大众号:编程进阶录
,记载一些自己学习进程傍边的笔记和心得,欢迎咱们关注
快速上手Discord 机器人开发
闲来无事,在接单群里找了个单,因为自己往常没事的时分也会接接外包的单子,顺便赚点外快,干好发现群里有个开发 Discord 机器人的单子,二话不说,直接接了,接下来便是渐渐的去找各种文档学习怎么开发了。接下来是我的一些学习的记载,假如有错误的地方,欢迎各位大佬纠正。
可能有许多同学不知道 Discord 是个什么东西,在这儿我和咱们介绍一下,Discord 是一个国外的在线谈天室,就类似于国内的 YY语音、微信之类的谈天软件。
开发前的预备
这儿开发之前,因为某些原因需求用到特殊的工具,这儿我就不进行介绍啦。
discord官网地址:discord.com/
因为往常接触到的编程言语比较多,经过我的挑选,最终挑选了运用 Python 来完成(这儿直接踩了好多坑)
装置开发所需求的依靠
在正式开发之前,咱们需求预备好自己的开发环境,Python 的话直接挑选最新的即可,这儿就不对 Python 的装置进行介绍啦,直接自行网上查找即可。
装置 pycord 依靠
在不断踩坑的进程傍边,我发现 pycord
这个库其实对 discord.py
进行了封装,更佳容易上手开发,并且文档也更佳的具体,所以直接无脑挑选 pycord
即可。
装置指令
pip install py-cord
装置成功之后,就能够进行机器人的开发了。
创立机器人
1、登录到 Dicord 的开发者渠道
网址:discord.com/developers/…
点击页面右上角的 New Application
,输入你需求创立的机器人的名称,同意协议即可创立成功。
创立成功好了运用之后,挑选 Bot
选项卡,在运用程序傍边创立咱们自己的 bot
在下图所示的 Token
方位就可取得咱们创立好的机器人的 Token。
在 Bot 选项卡的页面傍边下拉能够给机器人挑选不同的权限来计算权限值(permissions integer)。
创立服务器
到这儿咱们的机器人现已创立成功了,接下来咱们将机器人添加到咱们的 Server 傍边去,这儿我直接挑选亲身创立
接下来回到刚刚的开发者渠道,找到 OAuth2
选项卡,挑选 URL Generator
,这儿我直接给机器人管理员的权限,挑选如下所示:
点击 Copy
按钮,将生成的授权链接复制到浏览器傍边,就能够呈现授权界面,如下所示,挑选你自己创立的 server,点击持续即可:
到这儿为止,咱们现已预备好了 Discord Bot 开发的基本条件,接下来就能够开始给咱们的机器人开发有意思的功用了。
创立自己的榜首个 discord 机器人
这儿我直接给出代码,然后再解说每一行代码的意义吧
import discord
# 这儿 proxy 依据你自己的需求进行填写,也能够不必填
bot = discord.Bot(proxy="http://127.0.0.1:7890", intents=discord.Intents.all())
@bot.event
async def on_ready():
print("机器人上线了")
@bot.slash_command(name = "hi", description = "Say hello to the bot")
async def hello(ctx):
await ctx.respond("Hey!")
bot.run('token') # 这儿替换成你自己的 token
榜首行代码傍边,咱们导入了咱们之前自己装置的 discord 包,然后运用 discord 包傍边的 Bot 目标实例化出来一个 bot 目标。
然后运用 bot
傍边 event
装修器来监听指定的完成,这儿我运用的 on_ready
便是当机器人预备好了之后,就会触发呼应的函数,这儿我直接运用打印语句进行简略的打印。
随后便是运用 slash_command
装修器来界说一条指令,slash_command
便是当用在与机器人的谈天对话框傍边输入 /
时就会弹出指令供你来挑选,其中 name
代表着指令的名称,description
代表对指令的一些解说阐明,就如同下面的图片傍边的相同。
接下来便是伙伴们自己将自己需求完成的逻辑编写到函数傍边即可。这儿我简略的让机器人回复Hey
。
下面是实际效果的展现。
OK,到这儿能够说现已成功入门了 discord 机器人开发,你还能够组合各种库、数据库等等进行开发,原理其实和开发 Web 差不多,可是我认为他更佳风趣。
发送能够交互的音讯
往常在开发网页的时分,咱们能够经过各种按钮、输入框来和咱们的运用程序交互,在 discord bot 的开发傍边,相同的 discord 也提供了许多能够供开发者挑选运用的交互组件,下面我演示一下常用的交互组件的运用方式。
发送按钮
和往常的网页开发相同,咱们能够让咱们的机器人给用户发送按钮,供用户挑选操作,稍微修改一下咱们的代码,如下所示:
import discord
# 这儿 proxy 依据你自己的需求进行填写,也能够不必填
bot = discord.Bot(proxy="http://127.0.0.1:7890", intents=discord.Intents.all())
class TestView(discord.ui.View):
def __init__(self):
super().__init__()
@discord.ui.button(label="点我")
async def on_click(self, button: discord.ui.Button, interaction: discord.Interaction):
await interaction.response.send_message("你点了我", ephemeral=True)
@bot.event
async def on_ready():
print("机器人上线了")
@bot.slash_command(name="hi", description="Say hello to the bot")
async def hello(ctx):
await ctx.respond("Hello!", view=TestView())
bot.run('token') # 这儿替换成你自己的 token
上面的代码傍边,咱们界说了一个 TestView
的类承继于 discord.ui.View
, 然后进行初始化,并且运用 @discord.ui.button
创立了一个文字为 点我
的按钮,经过给该按钮注册了一个事情回调,一旦用户点击咱们的按钮时就会触发咱们界说的回调按钮,回调函数的参数固定为上面上个,假如你需求进行参数传递,运用运用类的初始化机制完成,在结构器傍边传入即可。
切换到 discord 到机器人谈天界面,运用 /hi
指令,能够发现机器人成功的给咱们发送了一句话和一个 点我
的按钮,点击按钮之后机器人给咱们呼应了 你点了我
的音讯。