Articles of 电报机器人

Etherscan / Telegram API bot(电报)

我有兴趣build立一个电报机器人,将更新用户在etherscan API信息。 所以当一个用户用一个string向机器人发送消息时,它会返回一些简单的数据。 我如何使用API​​? 我已经阅读了许多教程,但是我不太了解API的工作原理。 我想使用节点js 谢谢你对这个广泛的问题的任何回应

发送json数据到电报bot节点js的问题?

我真的有这个奇怪的事情在我的代码。 所以,我从数据库获取数据,然后提取数据并将数据发送回机器人。 一切工作到目前为止,但这是真正的问题。 当从json数组发送数据时,我发现数据是按照随机顺序从数组中发送的,而不是像我所期望的那样顺序发送。 这可能是什么原因? 我如何解决它? case 'summary': var balance = ""; var transactionsummary = ""; var date = ""; flag = 0; trx.getsummary(senderid).then(function (v) { var obj = JSON.parse(v); if (obj.balance2 != '-1') { console.log("Entered"); balance = obj.balance2; transactionsummary = obj.transactionsummary; date = obj.date2; flag = flag + 1; } if (flag > 0) […]

电报bot api inlineKeyboard不工作

我为我的电报bot使用node_telegram_bot_api 。 我创build了一个内联键盘button: var bot = new loader.Bot(config.botToken,{polling:true}); var options = { reply_markup: JSON.stringify({ inline_keyboard: [ [{text: 'Some button text 1', callback_data: '1'}], // Clicking will send "1" [{text: 'Some button text 2', callback_data: '2'}], // Clicking will send "2" [{text: 'Some button text 3', callback_data: '3'}] // Clicking will send "3" ] }) }; […]

电报API返回HTML而不是JSON

我正在写一个电报机器人来报告fail2ban禁令。 这是非常简单和肮脏,草率写,但它可以用来报告任何消息给一个电报用户: var TelegramBot = require('node-telegram-bot-api'); var fs = require('fs'); var store = { get: function (key) { return fs.readFileSync(__dirname + '/' + key, { encoding: 'utf-8' }); }, set: function (key, value) { fs.writeFileSync(__dirname + '/' + key, value, { encoding: 'utf-8' }); } }; var token = store.get('token'); var args = process.argv.slice(2); if […]

从电报信息中获取message_id – node.js

我正在处理一个Telegram机器人的问题。 我以下面的格式从用户那里收到消息: update { update_id: 82618016, message: { message_id: 363, from: { id: 22303518, first_name: 'Steve', language_code: 'de-DE' }, chat: { id: 22303518, first_name: 'Steve', type: 'private' }, date: 1501501753, text: 'j' } } 当我想访问聊天的ID我可以做到这一点没有任何问题,使用 $.message.chat.id 只要想获得message_id或first_name我只会得到“未定义”。 $.message.chat.first_name $.message.message_id 有人能帮我一下吗? 据我所知,我正确理解了信息的结构,所以我不知道这里有什么问题。 非常感谢你提前 编辑:我在这里添加更多我的代码: bot(包括webhook)的主要代码是这样的: initializeBot(); function initializeBot(){ const Telegram = require('telegram-node-bot'); const PingController = require('./controllers/ping'); […]

如何响应电报僵尸Webhook请求? 相同的请求重复

我正在使用官方的电报bot api来制作一个使用nodejs的电报机器人(用于学习目的)。 我设置了一个webhook heroku。 我可以回复这个请求,但是经过一段时间之后,同样的请求会再次出现。 得到相同的请求是正常的,还是我没有回应接下来的请求。 当我调用getwebhookinfo方法时,它显示了pending_update_count,但是我的代码确实响应了来自webhook的所有请求。 我用这个来回复即将到来的请求 var express = require('express'); var bodyParser = require('body-parser'); var app = express(); var config = require('./lib/config'); var request = require('request'); var port = process.env.PORT || 3000; var reply_url = "https://api.telegram.org/bot"+config.bot_token; app.use(bodyParser.json()); app.get('/',function(req,res) { res.send("Working"); request({ url: "https://api.telegram.org/bot"+config.bot_token+'/getMe', json : true }, (err,res,body)=>{ console.log(body); }); }); app.post('/'+config.bot_token , […]

电报API inline request_contact

在内联button或者api请求中可以使用request_contact吗? 我知道键盘,但它不适合我。

用PM2运行一个自定义的npm脚本

我目前正在开发几个电报机器人,但我想保留在同一个git存储库。 问题在于另一方面,我想把它们作为单独的进程运行。 由于我使用的是Telegraf框架,所以要运行一个机器人,例如: micro-bot src/bot-one/bot.js 这个问题出现在PM2上时。 我已经能够运行npm start脚本的机器人之一,像这样: pm2 start –name "WeatherBot" npm — start — -t < TOKEN> 但我想能够创build像这样的自定义脚本: "main": "src/weatherWarnBot/bot.js", "scripts": { "start": "micro-bot", "littleAppleBot": "micro-bot src/littleAppleBot/bot.js", "weatherWarnBot": "micro-bot src/weatherWarnBot/bot.js" } 但是,PM2命令将如何运行两个自定义脚本中的每一个? 为了简化,我正在考虑将bot代币设置为系统的环境variables。

通过Telegram Bot与用户对话共享内联消息链接

我正在使用node-telegram-bot-api,并且我有一个内联键盘,如何共享链接当用户单击该内联链接? 我需要select一个对话,然后在这个对话中粘贴这个链接: (telegram.me/my_bot?start) const iopts = { reply_markup: { inline_keyboard: [ [{ text: `Share This Bot to Your Friends`, url: `telegram.me/my_bot?start` }] ] } };

使用javascript在日常聊天中的string逻辑

我为Telegram Bot创build了一个AI,目前我正在尝试处理文本,并像用户一样对用户作出响应。 例如; “我要注册” 作为一个人我们知道用户想要注册。 所以我会使用javascript的indexOf处理这个文本来查找并注册 var user_text = message.text; if (user_text.indexOf('want') >= 0) { if (user_text.indexOf('register') >= 0) { console.log('He wants to register?') } } 但是,如果文本不包含在string中的某个地方呢? 当然,我会为数十亿个案例提供数十个条件。 写这种逻辑会很累人。 我的问题是 – 有没有其他优雅的方式来做到这一点? 我真的不知道关键字谷歌这…