Code Monkey home page Code Monkey logo

telegram-pwsbot's Introduction

PWS - Telegram投稿机器人

Build Status

此机器人帮助订阅者向频道投稿,支援多图(MediaGroup)投稿、稿件附加评论、夜间自动消音推送、多语言、黑名单等功能。

安装

先克隆项目

git clone https://github.com/axiref/telegram-pwsbot
cd telegram-pwsbot
npm install

然后创建配置文件,直接复制一份 env.example

cp env.example .env
vim .env

请务必填写下列参数:

  • Token,机器人的令牌,可透过 @botfather 获取
  • Admin,管理员,可透过 @userinfobot 获取,将数字ID复制填写
  • Channel,要投稿到的频道,填写格式为@频道ID,如@ruanyuww

另外你可以设置下列可选参数:

  • AutoMute,夜间静音推送(00:00AM~7:00AM),留空则禁用,需填写时区 (时区列表)

  • Lang,语言,可选 zh-CNzh-TW,分别为中文简体🇨🇳,中文正体🇹🇼

    你可以修改和添加自己的语言,在 /src/lang目录下,<语言名>.json命名的文件

注意:每次修改.env配置文件,都需要重新启动项目

填写完毕后,使用

npm run start

即可运行项目,此时你可以观察终端有没有报错

若一切正常,但也请不要就这样运行项目,这样并不安全,你的机器人一定会罢工

强烈推荐使用 PM2 来守护进程

使用下列命令安装 PM2

npm install pm2 -g

由于此项目目录已经携带了PM2的配置文件,你只需要在项目目录下运行

pm2 start

就可以看到名为 pwsbot的任务已经被运行,重启项目可使用 pm2 restart pwsbot 命令来完成。

项目启动后,必须将你的机器人添加到审稿群,机器人会将收到的稿件转发至审稿群,群内所有人皆可审核稿件,如果你没有审稿群,你应该建立一个。

将机器人加到审稿群后,务必在审稿群使用 /setgroup 命令来初始化机器人 (此命令可设置当前群为审稿群),只需运行一次。

然后需要将机器人添加到频道,普通的添加是无法将机器人添加到频道,你应该点开频道管理员列表,新增一个管理员,然后输入机器人的username,透过这样的方式才能将机器人添加到频道。

机器人在审稿群可以不是管理员,但在频道需要是管理员。

由此,部署完毕,你的投稿机器人应该已经可以正常工作了 🎉

命令

命令 说明 场景
/start 显示投稿说明 仅私聊
/version 显示机器人版权 私聊和群
/setgroup 设置当前群为审稿群
必须设置审稿群
/ok <评论> 通过一个稿件,也可附加评论
也可直接/ok通过稿件
/no <理由> 拒绝一个稿件,需附加理由
/re <回复内容> 回复一个稿件,需回复内容
/ban <用户ID> 回复稿件或者输入ID可拉黑一个用户
/unban <用户ID> 回复稿件或者输入ID可解除拉黑一个用户
/unre <用户ID> 结束用户的对话状态
/pwshelp 显示更多可对稿件采取的命令
/echo <回复内容> 回复给用户一次,但不进入对话模式

License

MIT

telegram-pwsbot's People

Contributors

axiref avatar dependabot[bot] avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

telegram-pwsbot's Issues

Server is running... 以后发动消息给机器人投稿 提示。。。。

(node:4199) UnhandledPromiseRejectionWarning: Error: ETELEGRAM: 400 Bad Request: chat_id is empty
at /root/telegram-pwsbot/node_modules/node-telegram-bot-api/src/telegram.js:280:15
at tryCatcher (/root/telegram-pwsbot/node_modules/bluebird/js/release/util.js:16:23)
at Promise._settlePromiseFromHandler (/root/telegram-pwsbot/node_modules/bluebird/js/release/promise.js:547:31)
at Promise._settlePromise (/root/telegram-pwsbot/node_modules/bluebird/js/release/promise.js:604:18)
at Promise._settlePromise0 (/root/telegram-pwsbot/node_modules/bluebird/js/release/promise.js:649:10)
at Promise._settlePromises (/root/telegram-pwsbot/node_modules/bluebird/js/release/promise.js:729:18)
at _drainQueueStep (/root/telegram-pwsbot/node_modules/bluebird/js/release/async.js:93:12)
at _drainQueue (/root/telegram-pwsbot/node_modules/bluebird/js/release/async.js:86:9)
at Async._drainQueues (/root/telegram-pwsbot/node_modules/bluebird/js/release/async.js:102:5)
at Immediate.Async.drainQueues [as _onImmediate] (/root/telegram-pwsbot/node_modules/bluebird/js/release/async.js:15:14)
at processImmediate (internal/timers.js:461:21)
(node:4199) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag --unhandled-rejections=strict (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
(node:4199) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

bug

Unhandled rejection RequestError: Error: connect ETIMEDOUT 31.13.92.5:443
at new RequestError (/root/telegram-pwsbot/node_modules/request-promise-core/lib/errors.js:14:15)
at Request.plumbing.callback (/root/telegram-pwsbot/node_modules/request-promise-core/lib/plumbing.js:87:29)
at Request.RP$callback [as _callback] (/root/telegram-pwsbot/node_modules/request-promise-core/lib/plumbing.js:46:31)
at self.callback (/root/telegram-pwsbot/node_modules/request/request.js:185:22)
at Request.emit (node:events:513:28)
at Request.onRequestError (/root/telegram-pwsbot/node_modules/request/request.js:877:8)
at ClientRequest.emit (node:events:513:28)
at TLSSocket.socketErrorListener (node:_http_client:494:9)
at TLSSocket.emit (node:events:513:28)
at emitErrorNT (node:internal/streams/destroy:157:8)
at emitErrorCloseNT (node:internal/streams/destroy:122:3)
at processTicksAndRejections (node:internal/process/task_queues:83:21)

Unhandled rejection RequestError: Error: connect ETIMEDOUT 31.13.92.5:443
at new RequestError (/root/telegram-pwsbot/node_modules/request-promise-core/lib/errors.js:14:15)
at Request.plumbing.callback (/root/telegram-pwsbot/node_modules/request-promise-core/lib/plumbing.js:87:29)
at Request.RP$callback [as _callback] (/root/telegram-pwsbot/node_modules/request-promise-core/lib/plumbing.js:46:31)
at self.callback (/root/telegram-pwsbot/node_modules/request/request.js:185:22)
at Request.emit (node:events:513:28)
at Request.onRequestError (/root/telegram-pwsbot/node_modules/request/request.js:877:8)
at ClientRequest.emit (node:events:513:28)
at TLSSocket.socketErrorListener (node:_http_client:494:9)
at TLSSocket.emit (node:events:513:28)
at emitErrorNT (node:internal/streams/destroy:157:8)
at emitErrorCloseNT (node:internal/streams/destroy:122:3)
at processTicksAndRejections (node:internal/process/task_queues:83:21)

Unhandled rejection RequestError: Error: connect ETIMEDOUT 162.125.34.133:443
at new RequestError (/root/telegram-pwsbot/node_modules/request-promise-core/lib/errors.js:14:15)
at Request.plumbing.callback (/root/telegram-pwsbot/node_modules/request-promise-core/lib/plumbing.js:87:29)
at Request.RP$callback [as _callback] (/root/telegram-pwsbot/node_modules/request-promise-core/lib/plumbing.js:46:31)
at self.callback (/root/telegram-pwsbot/node_modules/request/request.js:185:22)
at Request.emit (node:events:513:28)
at Request.onRequestError (/root/telegram-pwsbot/node_modules/request/request.js:877:8)
at ClientRequest.emit (node:events:513:28)
at TLSSocket.socketErrorListener (node:_http_client:494:9)
at TLSSocket.emit (node:events:513:28)
at emitErrorNT (node:internal/streams/destroy:157:8)
at emitErrorCloseNT (node:internal/streams/destroy:122:3)
at processTicksAndRejections (node:internal/process/task_queues:83:21)

运行后提示这个,服务器防火已开443
服务器端ping的话是可以通的
现在我的问题可能是目标服务器是否可用?或者可以替换使用的吗?

希望增加机器人对接多个频道的投稿和发布

大概的想法是:设置好一个机器人,用户可以发送特定的命令选择需要投稿的频道,投稿到一个审核群中,若审核通过,自动发布到对应的那个频道。

感觉还是挺有用的,节约了搭建多个bot的资源,也不需要设置多个审稿群了。

不知可否实现。

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.