编程打卡:tg的bot开发尝试

Posted 松坂制糖厂

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编程打卡:tg的bot开发尝试相关的知识,希望对你有一定的参考价值。

首先,去专门的Bot那里申请一个Token
官网列举了很多 Bot API Library 我只会Python 所以就用 python-telegram-bot
https://github.com/python-telegram-bot/python-telegram-bot/
然后就别看我写的了,去看官网的wiki吧,相对我写的绝对更能解决问题。

pip 安装 即可

import logging
from telegram import Update
from telegram.ext import ApplicationBuilder, ContextTypes, CommandHandler

logging.basicConfig(
    format=\'%(asctime)s - %(name)s - %(levelname)s - %(message)s\',
    level=logging.INFO
)

async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
    await context.bot.send_message(chat_id=update.effective_chat.id, text="I\'m a bot, please talk to me!")

if __name__ == \'__main__\':
    application = ApplicationBuilder().token(\'TOKEN\').build()
    
    start_handler = CommandHandler(\'start\', start)
    application.add_handler(start_handler)
    
    application.run_polling()

这个简单的例子中,logging 来记录log,出错了方便找到问题。
async 定义了一个异步函数,什么是异步?我瞎解释的就是它会独立运行,花时间也不用接下来的任务等它这样?
这个函数有两个参数,update,就当作是触发这个函数的东西,里面的内容是什么,谁发送的,之类的东西。context就是库本身的一些状态。
你可以看到,它会让bot往触发这个函数的聊天里面发送一条消息,内容就是"I\'m a bot, please talk to me!"
在 应该看起来像是主函数 里面,首先登录,TOKEN就填写之前获取的TOKEN
然后创建一个 handler,监听 start 这个命令
接下来添加这个handler
application.run_polling(),就是让这个bot持续运行,除非你关掉它。
好了,现在你可以做个自己的bot啦!

Messenger Bot 无法响应

【中文标题】Messenger Bot 无法响应【英文标题】:Messenger Bot Fails to Respond 【发布时间】:2016-11-16 05:05:00 【问题描述】:

我的机器人已经获得批准并且可以公开使用(见图),但它不会回复除开发者之外的任何人。

我将它托管在 Heroku 上。我尝试使用大量控制台日志对其进行调试,并且我意识到当开发人员以外的任何人发送它时,它不会记录 "Enter App.Post"(见下文)一个消息。

有其他人经历过这种行为吗?

/// Facebook verification
app.get('/webhook/', function (req, res) 
    if (req.query['hub.verify_token'] === '***************') 
        res.send(req.query['hub.challenge'])
    
    res.send('Error, wrong token')
)

/// Star up the server
app.listen(app.get('port'), function() 
    console.log('running on port', app.get('port'))
)

app.post('/webhook/', function (req, res) 
    console.log("Enter App.Post");
    messaging_events = req.body.entry[0].messaging
    for (i = 0; i < messaging_events.length; i++) 
        ....

更新:我发现了以下日志:

Error:   message: '(#10) Cannot message users who are not admins, developers or testers of the app until pages_messaging permission is reviewed and the app is live.',
type: 'OAuthException',
code: 10,
fbtrace_id: 'CVUDg****' 

【问题讨论】:

【参考方案1】:

您确定您的 Facebook Messenger 机器人已获得 Facebook 的批准吗?

除了管理员、开发人员和测试人员之外的任何人都可以使用它之前,他们必须正式批准信使机器人。

提供的代码中没有任何内容可以阻止它接收来自其他用户的消息,所以我猜你的机器人实际上还没有得到 Facebook 的批准。

如果您尝试使用除您自己之外的用户对其进行测试,请将他们添加为测试人员,他们将可以访问机器人,预先批准。

【讨论】:

它是 approved 并且是 public 。它也适用于我指定为测试人员的人 也许他们的批准有问题。有没有办法重新提交?如果没有,您可能需要打开错误报告。

以上是关于编程打卡:tg的bot开发尝试的主要内容,如果未能解决你的问题,请参考以下文章

Telegram Bot 电报机器人合集详解版

编程打卡:玩玩bluepy

面试题打卡——第九天

如何保持 python 3 脚本(Bot)运行

21天敏捷打卡--敏捷方法实现

telegrom bot 发送消息