Giter Club home page Giter Club logo

nezha_telegram_bot's Introduction

English version

哪吒面板API查询机器人

本项目是哪吒面板衍生项目,基于API实时查询哪吒面板的服务器信息。

项目特色

  • 支持中/英多语言切换
  • 支持分组统计(CPU磁盘内存上下行速度流量统计等)
  • 支持实时刷新单个服务器数据
  • 支持键盘互动查询
  • 支持命令直接查询
  • 增加群聊判断,限制群聊可发送命令
  • 增加群聊内5秒自动删除信息
  • 支持docker部署
  • 增加websocket统计,无需API【】
  • 增加排行榜功能(娱乐)【fake-nezha-agent出来了大概率不会再做这个功能了】

命令列表

命令 功能 仅私聊
start 开始使用键盘主菜单 ✔️
help 帮助列表
add 添加面板链接和token ✔️
url 添加面板链接 ✔️
token 添加面板token ✔️
info 获取保存的面板链接和token ✔️
delete 删除保存的面板链接和token ✔️
id 命令后面添加整数id,来进行单个服务器信息查询(私聊带刷新按钮,群聊不带)
all 查询所有服务器的统计信息
search 在服务器名字中搜索关键字(支持多个,用空格分开)

效果展示

image image

项目部署

直接python运行

环境要求

安装步骤

首先将项目clone到本地,打开项目文件夹,执行

pip install -r requirements.txt

复制一份 conf.ini

cp conf.ini.example conf.ini
vim conf.ini

填入下列信息:

[TELEBOT]
# 机器人token
BOT_TOKEN = 
# 国内服务器需要telegram bot api反代,请参考https://nezhahq.github.io/guide/q1.html
# 国外服务器留空即可
BASE_URL =
BASE_FILE_URL =

[DEVELOPER]
# 填入开发者telegram userid
DEVELOPER_CHAT_ID = 

然后运行项目即可

python3 main.py

如果想要长期部署,请使用 tmux 或者 screen 运行。 例如 tmux 安装:

# Debian or Ubuntu
apt install tmux
# CentOS or RedHat
yum install tmux

tmux 使用:

tmux new -s telebot
cd nezha_telegram_bot
python3 main.py

然后键盘按下 ctrl + b d 即可 detach 当前窗口。

注:没有试过在windows进行部署,如果部署的话,应该需要注释掉main.py中的 os.environ['TZ'] = 'Asia/Shanghai'time.tzset()

Docker 部署【推荐】

将配置文件下载至本地然后编辑

mkdir nezha && cd nezha
wget https://raw.githubusercontent.com/tech-fever/nezha_telegram_bot/main/conf.ini.example -O conf.ini
vim conf.ini

对配置文件 conf.ini 进行修改。 将 docker-compose.yml 下载至本地文件夹,然后运行

wget https://raw.githubusercontent.com/tech-fever/nezha_telegram_bot/main/docker-compose.yml
docker-compose up -d

重启机器人

docker-compose down
docker-compose up -d

版本升级

docker-compose pull # 拉取新版本
# 重启
docker-compose down
docker-compose up -d

注意此时如果有新版本的话,会有旧版本镜像残留,tag会是None。运行命令 docker images 类似于下面这样:

REPOSITORY                                          TAG         IMAGE ID       CREATED              SIZE
techfever/nezha_telegram_bot                        latest      b9f3543f80ef   About a minute ago   69.1MB
techfever/nezha_telegram_bot                        <none>      1d92ec28e0fb   7 hours ago          69.1MB

这个时候,下面这行就是旧版本镜像,可以将其删除。

docker images
docker rmi 需要删除的镜像ID # 在这个例子里就是1d92ec28e0fb

语言开发

本项目使用 crowdin 进行多语言翻译,如对语言有建议/想要贡献新的语言请至项目地址: https://zh.crowdin.com/translate/telegram-bot-nezha/

成为翻译者: https://crwd.in/telegram-bot-nezha

(作者也是第一次用 crowdin ,但是发现还蛮好上手的)

也可以下载项目中的 'myapplication.pot' 文件至本地进行编辑开发。

感谢

nezha_telegram_bot's People

Contributors

tech-fever avatar

Stargazers

hedging8563 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar giddly avatar  avatar  avatar  avatar  avatar V avatar  avatar TinK avatar  avatar Sakure avatar  avatar  avatar NateF avatar louis avatar SNA QUAN avatar  avatar DeYo572 avatar  avatar  avatar  avatar  avatar Chisato22 avatar Abobo avatar  avatar Sean avatar xiangchu avatar 可乐是欧皇 avatar  avatar  avatar  avatar  avatar  avatar Tony avatar KimmyXYC avatar glucy avatar 吴泽华 avatar  avatar explorer avatar Tea avatar MingLoong avatar 暮月 avatar  avatar  avatar Cong Shu Hao avatar Koi avatar  avatar lufeiit avatar ZGQ Inc. avatar 芯芒 avatar  avatar 犬来八荒 avatar bailu avatar 张大虾 avatar  avatar MoShaoLi avatar  avatar anoixa avatar Mr.Wang avatar LoveZ avatar EveryCoding avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

nezha_telegram_bot's Issues

docker-compose方式安装运行报错

Traceback (most recent call last):
File "/usr/local/lib/python3.9/site-packages/telegram/ext/utils/promise.py", line 96, in run
self._result = self.pooled_function(*self.args, **self.kwargs)
File "/opt/nezha_telegram_bot/utils/handler.py", line 455, in search_command
send_message = update.message.reply_text
AttributeError: 'NoneType' object has no attribute 'reply_text'

/all 沒反應

如題,按照docker 方式安裝後/all (/search /id)沒反應,只有加入面版正常/help /info /id /add /token /url 可以用

看了下LOG: 好像是請求有問題

2023-12-11T12:52:14.535620750Z   File "/usr/local/lib/python3.9/site-packages/telegram/utils/request.py", line 279, in _request_wrapper
2023-12-11T12:52:14.535623175Z     raise BadRequest(message)
2023-12-11T12:52:14.535625438Z telegram.error.BadRequest: Query is too old and response timeout expired or query id is invalid
2023-12-11T12:52:14.822200424Z 2023-12-11 20:52:14,822 - telegram.ext.dispatcher - ERROR - An uncaught error was raised while handling the error.
2023-12-11T12:52:14.822391555Z 2023-12-11 20:52:14,822 - utils.handler - ERROR - Exception while handling an update:
2023-12-11T12:52:14.822397837Z Traceback (most recent call last):
2023-12-11T12:52:14.822400652Z   File "/usr/local/lib/python3.9/site-packages/telegram/ext/utils/promise.py", line 96, in run
2023-12-11T12:52:14.822403588Z     self._result = self.pooled_function(*self.args, **self.kwargs)
2023-12-11T12:52:14.822406022Z   File "/opt/nezha_telegram_bot/utils/handler.py", line 309, in button
2023-12-11T12:52:14.822408417Z     query.answer()
2023-12-11T12:52:14.822410691Z   File "/usr/local/lib/python3.9/site-packages/telegram/callbackquery.py", line 166, in answer
2023-12-11T12:52:14.822413086Z     return self.bot.answer_callback_query(
2023-12-11T12:52:14.822415350Z   File "/usr/local/lib/python3.9/site-packages/telegram/bot.py", line 133, in decorator
2023-12-11T12:52:14.822417764Z     result = func(*args, **kwargs)
2023-12-11T12:52:14.822441168Z   File "/usr/local/lib/python3.9/site-packages/telegram/bot.py", line 2710, in answer_callback_query
2023-12-11T12:52:14.822443703Z     result = self._post('answerCallbackQuery', data, timeout=timeout, api_kwargs=api_kwargs)
2023-12-11T12:52:14.822446127Z   File "/usr/local/lib/python3.9/site-packages/telegram/bot.py", line 298, in _post
2023-12-11T12:52:14.822448482Z     return self.request.post(
2023-12-11T12:52:14.822450797Z   File "/usr/local/lib/python3.9/site-packages/telegram/utils/request.py", line 361, in post
2023-12-11T12:52:14.822453262Z     result = self._request_wrapper(
2023-12-11T12:52:14.822455536Z   File "/usr/local/lib/python3.9/site-packages/telegram/utils/request.py", line 279, in _request_wrapper
2023-12-11T12:52:14.822457971Z     raise BadRequest(message)
2023-12-11T12:52:14.822460275Z telegram.error.BadRequest: Query is too old and response timeout expired or query id is invalid
2023-12-11T12:52:15.109747926Z 2023-12-11 20:52:15,109 - telegram.ext.dispatcher - ERROR - An uncaught error was raised while handling the error.
2023-12-11T12:52:15.109979834Z 2023-12-11 20:52:15,109 - utils.handler - ERROR - Exception while handling an update:
2023-12-11T12:52:15.109986817Z Traceback (most recent call last):
2023-12-11T12:52:15.109989472Z   File "/usr/local/lib/python3.9/site-packages/telegram/ext/utils/promise.py", line 96, in run
2023-12-11T12:52:15.109992097Z     self._result = self.pooled_function(*self.args, **self.kwargs)
2023-12-11T12:52:15.109994511Z   File "/opt/nezha_telegram_bot/utils/handler.py", line 331, in button
2023-12-11T12:52:15.109997066Z     check_keyboard(update, context)
2023-12-11T12:52:15.109999360Z   File "/opt/nezha_telegram_bot/utils/handler.py", line 163, in check_keyboard
2023-12-11T12:52:15.110001905Z     update.callback_query.edit_message_text(text=text, reply_markup=reply_markup)
2023-12-11T12:52:15.110019678Z   File "/usr/local/lib/python3.9/site-packages/telegram/callbackquery.py", line 216, in edit_message_text
2023-12-11T12:52:15.110022223Z     return self.message.edit_text(
2023-12-11T12:52:15.110024818Z   File "/usr/local/lib/python3.9/site-packages/telegram/message.py", line 2136, in edit_text
2023-12-11T12:52:15.110027243Z     return self.bot.edit_message_text(
2023-12-11T12:52:15.110029516Z   File "/usr/local/lib/python3.9/site-packages/telegram/bot.py", line 133, in decorator
2023-12-11T12:52:15.110049706Z     result = func(*args, **kwargs)
2023-12-11T12:52:15.110053162Z   File "/usr/local/lib/python3.9/site-packages/telegram/bot.py", line 2778, in edit_message_text
2023-12-11T12:52:15.110055597Z     return self._message(
2023-12-11T12:52:15.110057851Z   File "/usr/local/lib/python3.9/site-packages/telegram/ext/extbot.py", line 202, in _message
2023-12-11T12:52:15.110060245Z     result = super()._message(
2023-12-11T12:52:15.110062490Z   File "/usr/local/lib/python3.9/site-packages/telegram/bot.py", line 339, in _message
2023-12-11T12:52:15.110064854Z     result = self._post(endpoint, data, timeout=timeout, api_kwargs=api_kwargs)
2023-12-11T12:52:15.110067228Z   File "/usr/local/lib/python3.9/site-packages/telegram/bot.py", line 298, in _post
2023-12-11T12:52:15.110069593Z     return self.request.post(
2023-12-11T12:52:15.110071827Z   File "/usr/local/lib/python3.9/site-packages/telegram/utils/request.py", line 361, in post
2023-12-11T12:52:15.110074222Z     result = self._request_wrapper(
2023-12-11T12:52:15.110076496Z   File "/usr/local/lib/python3.9/site-packages/telegram/utils/request.py", line 279, in _request_wrapper
2023-12-11T12:52:15.110078920Z     raise BadRequest(message)
2023-12-11T12:52:15.110081165Z telegram.error.BadRequest: Message to edit not found
2023-12-11T12:52:15.399764613Z 2023-12-11 20:52:15,399 - telegram.ext.dispatcher - ERROR - An uncaught error was raised while handling the error.
2023-12-11T12:52:15.400014816Z 2023-12-11 20:52:15,399 - utils.handler - ERROR - Exception while handling an update:
2023-12-11T12:52:15.400026448Z Traceback (most recent call last):
2023-12-11T12:52:15.400032469Z   File "/usr/local/lib/python3.9/site-packages/telegram/ext/utils/promise.py", line 96, in run
2023-12-11T12:52:15.400038079Z     self._result = self.pooled_function(*self.args, **self.kwargs)
2023-12-11T12:52:15.400043209Z   File "/opt/nezha_telegram_bot/utils/handler.py", line 309, in button
2023-12-11T12:52:15.400048499Z     query.answer()
2023-12-11T12:52:15.400090519Z   File "/usr/local/lib/python3.9/site-packages/telegram/callbackquery.py", line 166, in answer
2023-12-11T12:52:15.400098204Z     return self.bot.answer_callback_query(
2023-12-11T12:52:15.400103734Z   File "/usr/local/lib/python3.9/site-packages/telegram/bot.py", line 133, in decorator
2023-12-11T12:52:15.400125114Z     result = func(*args, **kwargs)
2023-12-11T12:52:15.400129262Z   File "/usr/local/lib/python3.9/site-packages/telegram/bot.py", line 2710, in answer_callback_query
2023-12-11T12:52:15.400134331Z     result = self._post('answerCallbackQuery', data, timeout=timeout, api_kwargs=api_kwargs)
2023-12-11T12:52:15.400138980Z   File "/usr/local/lib/python3.9/site-packages/telegram/bot.py", line 298, in _post
2023-12-11T12:52:15.400154270Z     return self.request.post(
2023-12-11T12:52:15.400157886Z   File "/usr/local/lib/python3.9/site-packages/telegram/utils/request.py", line 361, in post
2023-12-11T12:52:15.400161703Z     result = self._request_wrapper(
2023-12-11T12:52:15.400166392Z   File "/usr/local/lib/python3.9/site-packages/telegram/utils/request.py", line 279, in _request_wrapper
2023-12-11T12:52:15.400171241Z     raise BadRequest(message)
2023-12-11T12:52:15.400175550Z telegram.error.BadRequest: Query is too old and response timeout expired or query id is invalid
2023-12-11T12:52:15.686913943Z 2023-12-11 20:52:15,686 - telegram.ext.dispatcher - ERROR - An uncaught error was raised while handling the error.
2023-12-11T12:52:29.603227739Z 2023-12-11 20:52:29,602 - utils.handler - ERROR - Exception while handling an update:
2023-12-11T12:52:29.603249721Z Traceback (most recent call last):
2023-12-11T12:52:29.603262905Z   File "/usr/local/lib/python3.9/site-packages/telegram/ext/utils/promise.py", line 96, in run
2023-12-11T12:52:29.603265590Z     self._result = self.pooled_function(*self.args, **self.kwargs)
2023-12-11T12:52:29.603267984Z   File "/opt/nezha_telegram_bot/utils/handler.py", line 331, in button
2023-12-11T12:52:29.603270441Z     check_keyboard(update, context)
2023-12-11T12:52:29.603272704Z   File "/opt/nezha_telegram_bot/utils/handler.py", line 163, in check_keyboard
2023-12-11T12:52:29.603275089Z     update.callback_query.edit_message_text(text=text, reply_markup=reply_markup)
2023-12-11T12:52:29.603277544Z   File "/usr/local/lib/python3.9/site-packages/telegram/callbackquery.py", line 216, in edit_message_text
2023-12-11T12:52:29.603279968Z     return self.message.edit_text(
2023-12-11T12:52:29.603282202Z   File "/usr/local/lib/python3.9/site-packages/telegram/message.py", line 2136, in edit_text
2023-12-11T12:52:29.603284627Z     return self.bot.edit_message_text(
2023-12-11T12:52:29.603286871Z   File "/usr/local/lib/python3.9/site-packages/telegram/bot.py", line 133, in decorator
2023-12-11T12:52:29.603289225Z     result = func(*args, **kwargs)
2023-12-11T12:52:29.603291469Z   File "/usr/local/lib/python3.9/site-packages/telegram/bot.py", line 2778, in edit_message_text
2023-12-11T12:52:29.603293864Z     return self._message(
2023-12-11T12:52:29.603296139Z   File "/usr/local/lib/python3.9/site-packages/telegram/ext/extbot.py", line 202, in _message
2023-12-11T12:52:29.603298523Z     result = super()._message(
2023-12-11T12:52:29.603300757Z   File "/usr/local/lib/python3.9/site-packages/telegram/bot.py", line 339, in _message
2023-12-11T12:52:29.603313241Z     result = self._post(endpoint, data, timeout=timeout, api_kwargs=api_kwargs)
2023-12-11T12:52:29.603315675Z   File "/usr/local/lib/python3.9/site-packages/telegram/bot.py", line 298, in _post
2023-12-11T12:52:29.603318010Z     return self.request.post(
2023-12-11T12:52:29.603320224Z   File "/usr/local/lib/python3.9/site-packages/telegram/utils/request.py", line 361, in post
2023-12-11T12:52:29.603322598Z     result = self._request_wrapper(
2023-12-11T12:52:29.603324892Z   File "/usr/local/lib/python3.9/site-packages/telegram/utils/request.py", line 279, in _request_wrapper
2023-12-11T12:52:29.603327287Z     raise BadRequest(message)
2023-12-11T12:52:29.603329531Z telegram.error.BadRequest: Message to edit not found
2023-12-11T12:52:29.891775789Z 2023-12-11 20:52:29,891 - telegram.ext.dispatcher - ERROR - An uncaught error was raised while handling the error.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.