Mastodon | 做完这个没关系bot就去打游戏

1210字

标题是此时此刻本人真实心理状态实录,只不过要改改:写完这个没关系bot搭建文章我就去玩游戏。
……真的很想去打大逆转裁判!但是今天不写就真的不知道会继续拖延到什么时候了……

之前曾经在毛象搭过一个微博镜像bot,具体过程可以参考Mastodon | 微博转发到 Mastodon bot,前两天在毛象偶尔提到最近看到的“没关系”句式,随手发了一条嘟,大意是想到一个社畜安慰bot,可以定时在TL发送“没事,起床已经很厉害了”“没事,写下TODO已经很厉害了”等等安慰语句,没想到大受欢迎,整整一天都在不停地收到转嘟和点赞,于是为什么不真的做一个呢!

本次Bot搭建感谢黛布拉的麻瓜念咒之时间线轰炸机,以及nazgul的mastodon-bot代码样例,我只是简单地做了一点缝合和照搬。

安装过程

安装前的准备:新注册一个Mastodon账号,注册后,在管理面板找到开发 - 创建新应用,创建一个新的应用,并给予读 / 写权限,最后复制你的访问令牌

按照Mastodon | 微博转发到 Mastodon bot在VPS上装好Python,再创建一个用来放bot相关文件的文件夹,这里我把bot文件夹放在miniconda文件夹里面。

cd miniconda
conda create -n mastbot python=3.8 #创建一个叫mastbot的版本为3.8的python虚拟环境,如果已经创建了就不用了
conda activate mastbot #激活mastbot环境,root账号前会出现(mastbot)
pip3 install requests beautifulsoup4 Mastodon.py #安装mastodon.py
mkdir dontworry
cd dontworry

这里遇见的问题是激活环境时报错CommandNotFoundError: Your shell has not been properly configured to use 'conda activate'.
解决方案:运行source activate(激活环境),并source deactivate(退出环境)

新建一个mybot_usercred.secret,写入刚刚的你的访问令牌

新建一个dontworry.py,写入以下内容

import random
from mastodon import Mastodon

mastodon = Mastodon(
    access_token = 'mybot_usercred.secret',
    api_base_url = '实例地址',
)

content = random.choice(open("content.txt").read().splitlines())  # 要发送的内容放在当前文件夹下面的 `content.txt` 里,每行一句
mastodon.status_post(content)

最后新建一个content.txt,在content.txt里写入你想让bot随机发送的语句,尝试一下:python dontworry.py,如果顺利,那么你的bot就会发出初生的一条嘟嘟!


定时设置

如果想让bot每小时发送一条嘟嘟,人工蹲守执行python dontworry.py显然很麻烦,于是我们设置一个定时任务,让它每小时自己执行一次。

 */1 * * *  cd /root/miniconda/dontworry && /root/miniconda3/envs/mastbot/bin/python dontworry.py >> /root/miniconda/dontworry/log.txt 2>&1

注意,因为我们的python实际上是运行在虚拟环境中的,/root/miniconda3/envs/mastbot/bin/python dontworry.py的部分是dontworry.py的绝对路径,如果直接装python,可以使用pwd命令来查看当前绝对路径。
如果定时任务报错,相关报错日志会记录在/root/miniconda/dontworry/log.txt文件中,可以针对性解决。

最后:研究了半天,自动回复要怎么做呢…………