作为你的物联网私人助理的电报机器人

kaoru的Python项目详细描述


考鲁

https://badge.fury.io/py/kaoru.svg

作为您的个人物联网助理的电报机器人

kaoru可以定义为一个电报机器人,其角色非常相似 与物联网私人助理有关的人。

好吧,我想我明白了,但是它有什么用呢?

kaoru的人生目标是通过 允许您远程控制主机上的某些内容 在这背后可能有你需要表演的时刻 办公室或家庭笔记本电脑上的管理任务 也许是忘了做,或者是你只能在他们面前做的事。 在这种情况下,类似物联网的方法是理想的,即,与您的 当你走在街上的时候告诉他们帮你做事, 或者和你的朋友共进晚餐,或者当你太困/太懒的时候 从你的沙发/床上起来。

目前,kaoru能够:

  • 重新启动主机
  • 关闭主机
  • 在主机上锁定屏幕
  • 从主机发送屏幕快照
  • 将主机挂接到RAM或磁盘上

我想实现的东西:

  • 对主机中发生的某些事情发送警报/警告
  • 告诉您的主机在其文件系统中向您发送一个文件。
  • 对文件执行tail,并在新内容附加到该文件时发送消息。

等等,什么?,机器人是一种公共领域,你知道吗?

虽然这是真的,但事实是让您的主机运行kaoru 意味着您可以控制her,包括(但不限于) 控制她要听的人,如Security所述。

好的,我明白了,我怎么用这个?,我只想亲自动手做这个“事情”…

好吧,你需要做的最重要的事情就是告诉@BotFather 根据Telegram Bots Documentation中的指定,为您创建一个新的bot

另一方面,当然,您必须安装kaoru

# First of all, you need to install
pip3 install kaoru

电报机器人只是一个没有手机的虚拟客户机, 你需要一些东西来控制这个机器人,这样它才能活跃起来 kaoru开始生效。

确保您已经正确设置了全新的电报机器人@BotFather 应该给你一个api访问令牌(一堆字符和数字)。 kaoru需要此令牌才能施展魔法。

此外,您可以从此点编辑configuration file

$ vi /path/to/your/kaoru.conf

注意:配置文件不是运行kaoru的必需,她可以 但是,它使用她的默认值,您至少需要设置api令牌 通过环境变量TG_TOKEN

现在您已经完成设置kaoru,现在是运行它的时候了!

$ kaoru --config /path/to/you/kaoru.conf

kaoru [version] - https://github.com/axltxl/kaoru
-------------------------------------------------
--- Reading configuration file at: asd.conf
(!) Strict mode has been enforced!
(!) You will need to register my commands with my @BotFather
(!) Ask him to /setcommands and after you
(!) have mentioned me, you can paste the following:
---
about - Information for nerds
start - Start me up
hello - See if I "live"help - Get list of available commands
screenlock - See if I "live"
screenshot - Get a screen shot from your host(s)
dryrun - Toggle "dry run" mode
cancel - Cancel any pending operation(s)
reboot - Reboot your host(s)
poweroff - Shut down your host(s)suspend - Suspend your host(s) to RAM
hibernate - Suspend your host(s) to disk
---
--- Waiting for updates ...

注意:请记住您必须为bot注册kaoru的命令 使用@BotFatherkaoru将告诉您如何使用。

所以,我把一切都安排好了。此机器人上有哪些命令可用?

问得好!,以下是当前的一组命令 支持kaoru,计划推出更多:

  • /hello一个简单的ping,看看您的bot是否是alive
  • /help如何使用kaoru
  • /screenlock锁定主机上的屏幕
  • /screenshot从您的主机获取屏幕快照
  • /poweroff告诉您的主机关闭
  • /reboot告诉主机重新启动
  • /cancel取消任何挂起的操作
  • /dryrun什么也不做,只是假装
  • /about信息,主要针对书呆子
  • /suspend挂起要RAM的主机
  • /hibernate将主机挂起到磁盘

为了正常工作对考鲁有什么要求吗?

是的。目前,kaoru只在 条件。运行kaoru的主机必须:

  • 至少是基于linux的(尽管从概念上讲,*nix应该是受支持的)
  • sudo。因为像shutdown这样的命令需要作为root运行。
  • 安装scrotimagemagick(如果希望/screenshot命令起作用的话)
  • 代表用户运行kaoru,该用户的sudo权限至少覆盖了shutdown的执行,而不需要密码。
  • 在系统上安装pm-utils。这是/suspend/hibernate正常工作所必需的。

配置文件

kaoru列出yaml中的各种配置指令 配置文件。这些指令包括 一个与blabla相关的电报bot api令牌。请参考 到example configuration file 有关如何配置kaoru的详细信息。

---############################# Example configuration file############################# Telegram Bot API access tokentoken:1XXXXXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXX# shutdown the host 2 minutes after a /poweroff command has been receivedpoweroff_delay:2# command to execute when a /screenlock command has been receivedscreenlock_cmd:xscreensaver

注意:配置文件可以由kaoru使用^{tt23}读取$ 参数,默认情况下,kaoru将查找上的配置文件 ~/.config/kaoru/kaoru.conf

安全性

默认情况下,kaoru公开运行,即它将侦听任何传入 任何想要与她交流的用户的更新,而这将允许您 为了快速看到她的工作,这是内在的,而且绝对不安全!!!!

一旦您对您的配置感到满意,我们强烈建议您 在配置文件上强制使用严格模式,如下所示:

---# .. other options are behind# enforce strict modestrict:true# The following are the users who can talk# to kaoru. Requests coming from users outside# this list are simply IGNORED.masters:-<your Telegram user name>-betty# your friend betty can also talk to kaoru

完成后,可以继续重新执行kaoru。 当strict指令设置为true时,kaoru将仅 收听并响应来自在masters中设置的用户的命令和消息。

选项

kaoru [options]
    {TT28 } $显示版本号和退出
  • -i | --interactive进入cli模式
  • -c FILE | --config FILE要使用的配置文件
  • ^ TT31 } $显示帮助消息并退出
  • -d | --dry-run实际上什么都不做
  • L NUM | --log-level NUM设置日志输出级别
  • -l FILE | --log-file LOG_FILE设置日志文件

贡献

你可以用很多方法为高茹做贡献。 代码补丁只是其中一件事,你可以提交以帮助项目。 我们也欢迎反馈、错误报告、功能请求、文档改进, 广告和测试。

反馈贡献

这是迄今为止最简单的贡献方式。 如果你是为了自己的利益而使用kaoru,不要犹豫分享。 请随意submit issues and enhancement requests.

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何在Eclipse中删除模板   Maven,如何添加本地系统javasource的依赖关系?   Mongodb java驱动程序将结果作为字符串而不是bson对象获取   java当jdbc与sqlite3数据库连接时,我应该如何避免“内存不足”的错误?   java使用回调还是Android中使用处理程序?   用于Java的PL/Itype PUT数据方法   java如何在Jersey REST方法中使用可选数量的参数?   java如何为类编写JUnit测试用例   java如何编辑来自不同类的主类中标签的颜色?   java Kotlin系统的本机等价物。出口(1)   rest模板调用中各种异常情况的java处理   java Grails:集成测试Ajax请求xhr   在java中,如何设置两行字符串的格式,使最下面一行的项与最上面一行的项对齐   只调用一次的java代码块是否值得使用自己的方法?   java将计数器引入scala中的循环