”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 在 Raspberry Pi 5 上托管 Telegram 机器人

在 Raspberry Pi 5 上托管 Telegram 机器人

发布于2024-11-04
浏览:794

Host Telegram Bot on Raspberry Pi 5

目录:

  • 简介
  • 在Raspberry Pi 5上安装操作系统
  • 通过 SSH 连接到 Raspberry Pi
  • 准备环境
  • 创建并运行机器人
  • 使用 tmux 让机器人在后台运行
  • 开机自动启动机器人(可选)

简介

在上一篇文章中,我演示了如何使用 Python 创建和运行 Telegram 机器人。你可以在这里找到它

在本指南中,我将引导您在自己的 Raspberry Pi 服务器上托管 Telegram 机器人。

在树莓派 5 上安装操作系统

按照本指南使用 Raspberry Pi Imager 创建图像。

我建议选择 Raspberry Pi OS Lite 操作系统,因为它是轻量级简单性的最佳选择。

在成像仪设置中,选中启用 SSH 旁边的框,然后选择使用密码身份验证。这将允许您通过 SSH 连接到您的 Raspberry Pi。

在 USB 闪存驱动器上创建镜像后,将闪存卡插入树莓派并开机。

通过 SSH 连接到树莓派

  1. 打开控制台(Windows 上的 cmd 或 PowerShell)
  2. 使用以下命令对 Raspberry Pi 进行 Ping:
ping raspberrypi.local

您将收到 ping 统计数据以及 Raspberry Pi 的 IP 地址。

  1. 使用此 IP 地址通过 SSH 连接:
SSH pi@ (for example: SSH [email protected])
  1. 输入密码(默认为raspberry)。我强烈建议稍后更改此设置。
  2. 如果密码正确,您将通过 SSH 连接到 Raspberry Pi。

准备冲突

  1. 更新您的 Raspberry Pi
sudo apt update
sudo apt upgrade
  1. 安装Python Raspberry Pi 操作系统通常预装了 Python。检查是否已安装:
python3 --version

如果没有安装Python,可以使用以下命令安装:

sudo apt install python3 python3-pip
  1. 设置虚拟环境(可选但推荐) 创建虚拟环境来隔离项目依赖项是一个很好的做法:
sudo apt install python3-venv
python3 -m venv telegram-bot-env
source telegram-bot-env/bin/activate
  1. 安装 Python Telegram 机器人库
pip install python-telegram-bot --upgrade

创建并运行机器人

  1. 使用 nano 文本编辑器创建一个新的 Python 文件
nano bot.py
  1. 在这个新文件中写入您的机器人代码_(您可以使用我上一篇文章中的代码)。按 CTRL O,然后按 Enter 键保存更改。要退出,请按 CTRL X。
  2. 运行机器人
python3 bot.py

您的机器人现已运行,您可以在 Telegram 上测试它。

但是,当您关闭终端时,此方法将终止机器人。

为了让它在后台运行,我们可以使用 tmux

使用 tmux 让机器人在后台运行

创建可执行的 Shell 脚本来启动您的机器人

  1. 安装 tmux
sudo apt update
sudo apt install tmux
  1. 创建一个新的 shell 脚本来启动您的机器人。您可以将其命名为start_bot.sh
nano start_bot.sh
  1. 将以下行添加到脚本中,将 bot.py 替换为您的 Python 机器人文件名称,将 telegram-bots-env 替换为您的环境名称:
#!/bin/bash
source telegram-bots-env/bin/activate
python3 bot.py
  1. 保存并退出(CTRL O、Enter、CTRL X)。
  2. 使脚本可执行:
chmod  x start_bot.sh

通过 tmux 运行 Bot:

  1. 启动一个新的 tmux 会话:
tmux new -s my_bot_session
  1. 在 tmux 会话中,运行您的机器人脚本:
./start_bot.sh
  1. 按 CTRL B,然后按 D 从 tmux 会话分离
  2. 重新附加到 tmux 会话(如果需要) 要稍后重新连接到机器人的 tmux 会话,请使用:
tmux attach -t my_bot_session

启动时自动启动机器人(可选)

如果您希望机器人在启动时自动启动,您可以使用 systemd 服务。方法如下:

  1. 创建一个新的服务文件:
sudo nano /etc/systemd/system/my_bot.service
  1. 添加以下配置,根据需要修改路径:
[Unit]
Description=My Bot Service

[Service]
ExecStart=/usr/bin/tmux new-session -d -s my_bot_session '/path/to/start_bot.sh'
WorkingDirectory=/path/to/my_bot
User=pi

[Install]
WantedBy=multi-user.target
  1. 保存并退出文件。
  2. 重新加载systemd守护进程:
sudo systemctl daemon-reload
  1. 启用服务开机自启动:
sudo systemctl enable my_bot.service
  1. 启动服务:
sudo systemctl start my_bot.service
版本声明 本文转载于:https://dev.to/dmitry-koleev/host-telegram-bot-on-raspberry-pi-5-16ld?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 如何使用Regex在PHP中有效地提取括号内的文本
    如何使用Regex在PHP中有效地提取括号内的文本
    php:在括号内提取文本在处理括号内的文本时,找到最有效的解决方案是必不可少的。一种方法是利用PHP的字符串操作函数,如下所示: 作为替代 $ text ='忽略除此之外的一切(text)'; preg_match('#((。 &&& [Regex使用模式来搜索特...
    编程 发布于2025-04-05
  • 如何使用不同数量列的联合数据库表?
    如何使用不同数量列的联合数据库表?
    合并列数不同的表 当尝试合并列数不同的数据库表时,可能会遇到挑战。一种直接的方法是在列数较少的表中,为缺失的列追加空值。 例如,考虑两个表,表 A 和表 B,其中表 A 的列数多于表 B。为了合并这些表,同时处理表 B 中缺失的列,请按照以下步骤操作: 确定表 B 中缺失的列,并将它们添加到表的末...
    编程 发布于2025-04-05
  • 如何从PHP中的Unicode字符串中有效地产生对URL友好的sl。
    如何从PHP中的Unicode字符串中有效地产生对URL友好的sl。
    为有效的slug生成首先,该函数用指定的分隔符替换所有非字母或数字字符。此步骤可确保slug遵守URL惯例。随后,它采用ICONV函数将文本简化为us-ascii兼容格式,从而允许更广泛的字符集合兼容性。接下来,该函数使用正则表达式删除了不需要的字符,例如特殊字符和空格。此步骤可确保slug仅包含...
    编程 发布于2025-04-05
  • 如何在php中使用卷发发送原始帖子请求?
    如何在php中使用卷发发送原始帖子请求?
    如何使用php 创建请求来发送原始帖子请求,开始使用curl_init()开始初始化curl session。然后,配置以下选项: curlopt_url:请求 [要发送的原始数据指定内容类型,为原始的帖子请求指定身体的内容类型很重要。在这种情况下,它是文本/平原。要执行此操作,请使用包含以下标头...
    编程 发布于2025-04-05
  • 如何正确使用与PDO参数的查询一样?
    如何正确使用与PDO参数的查询一样?
    在pdo 中使用类似QUERIES在PDO中的Queries时,您可能会遇到类似疑问中描述的问题:此查询也可能不会返回结果,即使$ var1和$ var2包含有效的搜索词。错误在于不正确包含%符号。通过将变量包含在$ params数组中的%符号中,您确保将%字符正确替换到查询中。没有此修改,PDO...
    编程 发布于2025-04-05
  • 如何从PHP中的数组中提取随机元素?
    如何从PHP中的数组中提取随机元素?
    从阵列中的随机选择,可以轻松从数组中获取随机项目。考虑以下数组:; 从此数组中检索一个随机项目,利用array_rand( array_rand()函数从数组返回一个随机键。通过将$项目数组索引使用此键,我们可以从数组中访问一个随机元素。这种方法为选择随机项目提供了一种直接且可靠的方法。
    编程 发布于2025-04-05
  • 如何有效地转换PHP中的时区?
    如何有效地转换PHP中的时区?
    在PHP 利用dateTime对象和functions DateTime对象及其相应的功能别名为时区转换提供方便的方法。例如: //定义用户的时区 date_default_timezone_set('欧洲/伦敦'); //创建DateTime对象 $ dateTime = ne...
    编程 发布于2025-04-05
  • 如何使用替换指令在GO MOD中解析模块路径差异?
    如何使用替换指令在GO MOD中解析模块路径差异?
    在使用GO MOD时,在GO MOD 中克服模块路径差异时,可能会遇到冲突,其中3个Party Package将另一个PAXPANCE带有导入式套件之间的另一个软件包,并在导入式套件之间导入另一个软件包。如回声消息所证明的那样: go.etcd.io/bbolt [&&&&&&&&&&&&&&&&...
    编程 发布于2025-04-05
  • 如何限制动态大小的父元素中元素的滚动范围?
    如何限制动态大小的父元素中元素的滚动范围?
    在交互式接口中实现垂直滚动元素的CSS高度限制问题:考虑一个布局,其中我们具有与用户垂直滚动一起移动的可滚动地图div,同时与固定的固定sidebar保持一致。但是,地图的滚动无限期扩展,超过了视口的高度,阻止用户访问页面页脚。 映射{} 因此。我们不使用jQuery的“ .aimimate(...
    编程 发布于2025-04-05
  • Java是否允许多种返回类型:仔细研究通用方法?
    Java是否允许多种返回类型:仔细研究通用方法?
    在Java中的多个返回类型:一种误解类型:在Java编程中揭示,在Java编程中,Peculiar方法签名可能会出现,可能会出现,使开发人员陷入困境,使开发人员陷入困境。 getResult(string s); ,其中foo是自定义类。该方法声明似乎拥有两种返回类型:列表和E。但这确实是如此吗...
    编程 发布于2025-04-05
  • 如何将来自三个MySQL表的数据组合到新表中?
    如何将来自三个MySQL表的数据组合到新表中?
    mysql:从三个表和列的新表创建新表 答案:为了实现这一目标,您可以利用一个3-way Join。 选择p。*,d.content作为年龄 来自人为p的人 加入d.person_id = p.id上的d的详细信息 加入T.Id = d.detail_id的分类法 其中t.taxonomy =...
    编程 发布于2025-04-05
  • 为什么使用Firefox后退按钮时JavaScript执行停止?
    为什么使用Firefox后退按钮时JavaScript执行停止?
    导航历史记录问题:JavaScript使用Firefox Back Back 此行为是由浏览器缓存JavaScript资源引起的。要解决此问题并确保在后续页面访问中执行脚本,Firefox用户应设置一个空功能。 警报'); }; alert('inline Alert')...
    编程 发布于2025-04-05
  • 如何克服PHP的功能重新定义限制?
    如何克服PHP的功能重新定义限制?
    克服PHP的函数重新定义限制在PHP中,多次定义一个相同名称的函数是一个no-no。尝试这样做,如提供的代码段所示,将导致可怕的“不能重新列出”错误。 但是,PHP工具腰带中有一个隐藏的宝石:runkit扩展。它使您能够灵活地重新定义函数。 runkit_function_renction_re...
    编程 发布于2025-04-05
  • 如何解决由于Android的内容安全策略而拒绝加载脚本... \”错误?
    如何解决由于Android的内容安全策略而拒绝加载脚本... \”错误?
    Unveiling the Mystery: Content Security Policy Directive ErrorsEncountering the enigmatic error "Refused to load the script..." when deployi...
    编程 发布于2025-04-05
  • 如何使用Python的请求和假用户代理绕过网站块?
    如何使用Python的请求和假用户代理绕过网站块?
    如何使用Python的请求模拟浏览器行为,以及伪造的用户代理提供了一个用户 - 代理标头一个有效方法是提供有效的用户式header,以提供有效的用户 - 设置,该标题可以通过browser和Acterner Systems the equestersystermery和操作系统。通过模仿像Chro...
    编程 发布于2025-04-05

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3