
您好,Khabrovchans!
今天,您将读到一篇文章,该文章将告诉您如何在.NET Core上使用C#创建机器人,以及如何在远程服务器上获得它。
本文将包括背景知识,准备阶段,编写逻辑并将机器人程序转移到远程服务器。
希望本文对许多初学者有所帮助。
背景知识
这一切都始于我在Discord服务器上度过的一个不眠之夜。 由于我是最近才加入他的,所以我开始上下研究他。 找到文本通道“ Jobs”后,我开始感兴趣,打开它,并在对我来说不感兴趣的提案中找到了以下内容:
“程序员(机器人开发人员)
要求:
愿望:
任务:
您的利益:
- 支持和影响您喜欢的项目的能力;
- 获得团队合作经验;
- 展示和提高现有技能的机会。”
它立刻使我感兴趣。 是的,他们没有为这项工作付费,但他们不需要您承担任何义务,并且在投资组合中也不会多余。 所以我写了服务器管理员,他要我写一个机器人来显示《战车世界》中玩家的数据。
准备阶段
盘杆在开始编写我们的机器人之前,您需要为Discord创建它。 您需要:
- 在以下位置登录Discord帐户
- 在“应用程序”选项卡中,单击“新应用程序”按钮并命名该机器人
- 通过登录机器人并在“设置”列表中找到“启动”标签来获取机器人令牌。
- 将令牌保存在某处
战争游戏您还必须在Wargaming中创建一个应用程序才能访问Wargaming API。 这里的一切也很简单:
- 我们通过此链接转到Wargaming帐户
- 转到“我的应用程序”,然后单击“添加新应用程序”按钮,提供应用程序的名称并选择其类型
- 保存应用程序ID
软体类选择已经有了自由。 有人使用Visual Studio,有人使用Rider,有人使用功能强大,并在Vim中编写代码(仍然,真正的程序员仅使用键盘,对吗?)。 但是,为了不实现Discord API,可以使用非官方的C#库“ DSharpPlus”。 它可以从NuGet安装,也可以通过自己从存储库中收集源代码进行安装。
对于那些不知道或忘记如何从NuGet安装应用程序的人。有关Visual Studio的说明- 转到项目选项卡-NuGet程序包管理;
- 单击评论,然后在搜索字段中输入“ DSharpPlus”;
- 我们选择并安装框架;
- 赢利!
准备阶段已经结束,您可以继续编写机器人了。
拼写逻辑

我们不会考虑应用程序的整个逻辑,我只会展示如何通过机器人进行消息拦截以及如何使用Wargaming API。
使用Discord机器人可以通过静态异步Task MainTask(字符串[] args)函数进行操作;
要调用此功能,必须在Main中进行注册
MainTask(args).ConfigureAwait(false).GetAwaiter().GetResult();
接下来,您需要初始化您的机器人:
discord = new DiscordClient(new DiscordConfiguration { Token = token, TokenType = TokenType.Bot, UseInternalLogHandler = true, LogLevel = LogLevel.Debug });
令牌是您的机器人的令牌。
然后,通过lambda,我们写出机器人应该执行的必要命令:
discord.MessageCreated += async e => { string message = e.Message.Content; if (message.StartsWith("&")) { await e.Message.RespondAsync(“Hello, ” + e.Author.Username); } };
其中e.Author.Username-获取用户的昵称。
因此,当您发送任何以&开头的消息时,该机器人将欢迎您。
在此功能结束时,您需要注册一个await discord.ConnectAsync();。 并等待Task.Delay(-1);
这将允许您在不占用主线程的情况下在后台执行命令。
现在,您需要处理Wargaming API。 一切都很简单-编写CURL请求,以JSON字符串的形式获取答案,从那里提取必要的数据并对它们进行操作。
使用WargamingAPI的示例 public Player FindPlayer(string searchNickname) {
注意! 绝对不建议将所有令牌和应用程序ID以明文形式存储! 最低限度(Discord禁止这些令牌进入互联网时最大程度地禁止)-机器人开始使用网络犯罪分子。
在VPS服务器上部署

在完成漫游器之后,您需要将其放置在持续24/7全天候运行的服务器上。 这是由于以下事实:当您的应用程序运行时,该机器人也可以运行。 一旦您关闭该应用程序,您的机器人就会入睡。
Windows和Linux上都存在许多VPS服务器,但是在大多数情况下,Linux的托管价格便宜几倍。
在Discord服务器上,收到vscale.io的建议,我立即在Ubuntu上在该服务器上创建了一个虚拟服务器并上载了该bot。 我不会描述该站点的工作方式,但是我将立即进行机器人设置。
首先,您需要安装必要的软件,该软件将运行以.NET Core编写的bot。
在此说明如何执行此操作 。
接下来,您需要将机器人上载到GitHub之类的Git服务,并将其克隆到VPS服务器,或者以其他方式下载您的机器人。 请注意,您只有一个控制台,没有GUI。 绝对是
下载机器人后,您需要运行它。 为此,您需要:
- 还原所有依赖项:dotnet restore
- 生成应用程序:dotnet生成name_project.sln -c版本
- 转到内置的DLL;
- dotnet名称_of_file.dll
恭喜你! 您的机器人正在运行。 但是,不幸的是,该机器人占用了控制台,退出VPS服务器并不容易。 另外,如果服务器重新启动,则您将不得不再次启动机器人。 有两种方法可以解决这种情况。 所有这些都与服务器启动有关:
- 将脚本运行添加到/etc/init.d
- 创建将在启动时启动的服务。
我看不到详细说明的意义;所有内容都在Internet上进行了足够详细的描述。
结论
我很高兴自己完成了这项工作。 这是我的第一个机器人开发经验,我很高兴我在C#和使用Linux方面获得了新知识。
链接到Discord-服务器。
对于那些玩Wargaming游戏的人。链接到Discord bot所在的存储库。链接到DSharpPlus存储库。感谢您的关注!