运行 在 linux 上用 C# 编写的 raspberry pi discord 机器人?

Run a raspberry pi discord bot written in C# on linux?

正如标题所说,我正在制作一个用 C# 编写的 discord 机器人,我最近得到了一个树莓派,想知道我是否可以在上面安装 Linux 然后 运行 机器人即使它是用 C# 编写的?

答案通常是肯定的(查看下面 link 发布的 Mono)。标准功能可能不支持某些功能。我用过它,我知道它有效

http://www.mono-project.com/docs/getting-started/mono-basics/

我意识到我迟了一年才回答,但由于这是第一个 Google 结果,我认为在这里写一个快速指南会很有帮助。

这将 运行 .NET Core 2.1 Discord Bot 应用程序 Raspberry Pi 运行ning Raspbian.

此外,这是假设您没有适用于您的 Pi 的显示器(像我一样)。

首先,将您的 .NET Core 应用发布到 ARM 上的 运行。使用 WIN+X 然后 C 打开命令提示符。输入

cd <Path to project>

这应该是包含 .sln Visual Studio 文件的文件夹的路径。不要在命令中包含 .sln 文件。

接下来,运行 dotnet publish -r linux-arm,这可能需要一段时间,但最终应该会输出它编译到的目录。在某处记下此目录,因为您稍后需要它。

现在,您需要在 Windows 机器上安装 PuTTY。这是我们将用来临时连接到 Raspberry Pi 的工具。下载它 here.

要使 PuTTY 正常工作,请从 Raspberry Pi 中取出 SD 卡并将其放入计算机。在 BOOT 驱动器中,创建一个名为 "ssh" 的文件,不带扩展名。它必须在驱动器的根目录中。

现在将 SD 卡放回 Pi 并打开它。确保它已连接到互联网。

安装 PuTTY 后,运行 程序将出现一个 "Host name (or IP address)" 框。通过查看路由器的设置页面找到 Raspberry Pi 的 IP,或者,如果您有显示器,则在 Pi 的命令行界面上通过 运行ning ifconfig 找到。在框中输入此 IP 地址并确保选择连接类型 "SSH"。单击“打开”或按回车键。

应该会出现一个控制台 window,提示您登录。使用您在 Pi 上设置的凭据。如果您没有更改这些,默认用户名是 pi 和密码 raspberry.

接下来,运行在PuTTY中按以下命令安装.net:

sudo apt-get -y update

sudo apt-get -y install libunwind8 gettext

wget https://dotnetcli.blob.core.windows.net/dotnet/Sdk/2.1.300-rc1-008673/dotnet-sdk-2.1.300-rc1-008673-linux-arm.tar.gz

wget https://dotnetcli.blob.core.windows.net/dotnet/aspnetcore/Runtime/2.1.0-rc1-final/aspnetcore-runtime-2.1.0-rc1-final-linux-arm.tar.gz

sudo mkdir /opt/dotnet

sudo tar -xvf dotnet-sdk-2.1.300-rc1-008673-linux-arm.tar.gz -C /opt/dotnet/

sudo tar -xvf aspnetcore-runtime-2.1.0-rc1-final-linux-arm.tar.gz -C /opt/dotnet/

sudo ln -s /opt/dotnet/dotnet /usr/local/bin

为确保这些都有效,运行 dotnet --info。您应该获得有关 .NET Core 安装的大量信息。

现在您必须下载一个工具来将文件从计算机上的目录移动到 Pi。 下载 pscp.exe here。请记下您将其下载到的位置。

再次打开命令提示符,然后键入 cd <Location of pscp.exe>,命令中不包括 pscp.exe 本身。

现在,运行命令提示符下的这个命令将编译后的文件移动到 Pi。

PSCP -r "<Path to linux-arm folder>" pi@<Pi's IP Address>:/home/pi/

确保 " 在那里,否则如果文件路径中有空格,程序将变得混乱。

现在,在 PuTTY 中,导航到我们想要 运行 的文件所在的位置。这将是一个与您的解决方案同名的文件 (.sln),并且应该位于 linux-arm/publish/ 中。在 PuTTY 中使用 cd <path to file>。 (不要在命令中包含文件本身)。如果您想查看当前所在目录中的所有文件和文件夹,请使用 ls -la

准备您的程序 运行,运行 在 PuTTY 中这样:chmod 777 ./"<File Name>"

最后,程序可以运行。使用 ./"<File Name>" 到 运行 吧。只有当 PuTTY window 打开时,这才会 运行 程序,但现在测试它是很好的,所有的辛勤工作都会得到回报。

要使程序在 PuTTY window 关闭时继续 运行,您必须安装更多东西。 (使用 CTRL+C 关闭当前 运行ning 程序)运行,在 PuTTY 中,sudo apt-get install screen,然后 运行 以下命令启动您的机器人:

screen -dmS discordbot "/home/pi/linux-arm/publish/<File Name>"

机器人现在应该 运行 没有打开 PuTTY window。

您可以使用 crontab 使 bot 在重新启动时自动启动。 运行 crontab -e 进行编辑。您可以在底部添加一行,以@reboot 开头,后跟命令。用 ;.

分隔每个命令

一个 crontab 示例:

@reboot cd "FileBot/Running Environment" ; screen -dmS filebot "/home/pi/FileBot/Files/publish/FileBot"

然后您可以使用 sudo reboot 来测试它。

希望对您有所帮助!如果您按照这些说明有任何问题,请联系我或我在 Discord 上的朋友(230Daniel#1920 或 ComputerNerd100#0001)或对此答案发表评论。