Telegram机器人和自写用户签到功能
首先找@BotFather申请,拿api。
设置头像,ID之类的,很简单,具体过程不详说了。
这里是 我的BOT
后端控制这里就用Python。
直接pip3 install python-telegram-bot
装上包
关于机器人的配置这里有一些官方的参考示例 Examples 里面写的很具体清楚。
注意了:Telegram在国内是无法连接的,要把代码放到境外服务器上运行。
机器人正常运行以后,就能处理用户请求了。可以接上 图灵 的API让它和用户聊天,免费用户每天100条。
1 | import requests |
我的目标是建立个模型让机器人根据聊天记录进行学习,不过我现在的水平还达不到做人工智能,下面就简单的过一遍。
导入用到的包
1 | import logging |
主函数
1 | def main(): |
可以自己写一些好玩的。
1 | def echo(update, context): |
记得在主函数内加上
1 | dp.add_handler(MessageHandler(Filters.text, echo)) #非命令的消息,机器人回复消息。 |
关于内联查询,要先在@BotFather那里把inline模式打开,然后就可以在群里直接 @机器人 发消息了。
1 | def inlinequery(update, context): |
当然也要在主函数内加上
1 | dp.add_handler(InlineQueryHandler(inlinequery) |
让机器人处理/start命令,首先在@BotFather里设置添加命令。
1 | def start(update, context): |
主函数内添加
1 | dp.add_handler(CommandHandler("start", start)) |
最后调用主函数。
1 | if __name__ == '__main__': |
Linux系统通过SSH登录让机器人程序保持在后台运行nohup python3 -u xxx.py > log.out 2>&1 &
这样一个简单的tg机器人就完成了,还有更多功能可以实现,以下是我自己写的一个用户签到功能(刚学python两天写的代码求不吐槽)。
代码存在 Github 上 。 获取用户tg ID,每次向机器人请求签到时先从txt读取存储的数据到列表中,listA[userid,point]中的point值+1,然后将用户数据写入到txt文件中存储。
使用时调用函数 如果没签到过返回值是listA,已经签到之后返回值是一串字符串。详细见代码 内(第一次运行前要在.py文件目录里建 jfreset.txt)
1 | def sign(update, context): |
记得运行函数timer()
开启重置每日签到次数(每天0点重置签到次数。) (服务器是单核CPU,这里好像要用到多线程?不用thread只能执行1个函数。我也不知道这个是什么原理,有人可以告诉我吗?)
1 | from threading import Thread |
出现了一个错误,但两个函数还是都可以运行的ValueError: signal only works in main thread
。
评论
2020 年 5 月 15 日星期五 22:45:26 猫猫 nya.4@outlook.com 虽然看不懂但是感觉很厉害!!!!!!!!!