创建telegram 机器人

YGnice 2017-02-16

telegram是国外常用的聊天功能,功能很强大,除了聊天还可以玩游戏,传文件,视频,声音,投票,群组。当然,这些跟qq,微信都很类似了。但是它毕竟是国外最常用的IM之一。telegram有个聊天机器人可以自动发消息,也是挺有意思的。它还开放了api,可以自己创建bot,通过api发送消息,视频,声音,文件等功能。下面,我简单介绍下怎么新建一个bot

telegram有两种api,一种是botapi,一种是telegramapi。botapi是基于http访问,telegramapi是基于mtproto访问,访问需要加密,相对要复杂一些。后者也可以实现发送消息等功能。这里我只说第一种botapi。

首先要创建一个bot。访问

https://telegram.me/botfather

它会提示你用telegram打开。然后你就打开了botfarther的聊天对话框。输入

/newbot

回车发送。botfarther会反馈

Alright,anewbot.Howarewegoingtocallit?Pleasechooseanameforyourbot.

输入你要创建的bot名字。例如david_bot,回车发送

它会反馈

Good.Nowlet'schooseausernameforyourbot.Itmustendin`bot`.Likethis,forexample:TetrisBotortetris_bot.

我再输入DavidBot。这是这个机器人的名字。

它会反馈

Sorry,thisusernameisalreadytaken.Pleasetrysomethingdifferent.

这名字已经被用了。我们换一个

GZ_David_Bot

它会反馈

BotFather,[16.02.1714:23]

Done!Congratulationsonyournewbot.Youwillfinditatt.me/Gz_David_Bot.Youcannowaddadescription,aboutsectionandprofilepictureforyourbot,see/helpforalistofcommands.Bytheway,whenyou'vefinishedcreatingyourcoolbot,pingourBotSupportifyouwantabetterusernameforit.Justmakesurethebotisfullyoperationalbeforeyoudothis.

UsethistokentoaccesstheHTTPAPI:

xxx:xxx

ForadescriptionoftheBotAPI,seethispage:https://core.telegram.org/bots/api

这里它生成了apitoken。我们记下它。以后api请求都会用到。如果需要帮助,输入/help

输入/token可以重新生成一个token。

/revoke可以撤销一个token

我们需要用这个bot来发送消息,首先需要创建一个group,加入一些人,同时将这个bot也加进去。然后在这个group中发送消息。类似/hello@GZ_David_Bot

然后访问

https://api.telegram.org/xxx:xxx/getUpdates

我们会获取到一个json

{
	"ok" : true,
	"result" : [{
			"update_id" : xxx,
			"message" : {
				"message_id" : 4,
				"from" : {
					"id" : xxx,
					"first_name" : "david",
					"last_name" : "huang",
					"username" : "davidhuang"
				},
				"chat" : {
					"id" : -xxx,
					"title" : "bot",
					"type" : "group",
					"all_members_are_administrators" : true
				},
				"date" : xxx,
				"text" : "/hello @GZ_David_Bot",
				"entities" : [{
						"type" : "bot_command",
						"offset" : 0,
						"length" : 6
					}
				]
			}
		},
	]
}

这里,我们看到有个id,指的就是当前group的id。我们记下它。然后执行以下curl。

botXXX:YYYY指的是bot+token,一定要加上bot前缀

chat_id就是上面的id,注意是负数,必须有-

发送内容是=mysampletext

curl-XPOST"https://api.telegram.org/botXXX:YYYY/sendMessage"-d"chat_id=-zzzzzzzzzz&text=mysampletext"

执行完,这个group就收到消息了。

apigit:

https://github.com/unreal4u/telegram-api/graphs/contributors

但是悲剧的是,它只支持php7.

https://github.com/unreal4u/telegram-api/wiki

另外,也可以通过webhookapi获取聊天记录等功能。但是这个api要求我们的站点必须是https证书

还有个botsdk,它只要php5.5就可以了

https://telegram-bot-sdk.readme.io/reference#forwardmessage

https://github.com/irazasyed/telegram-bot-sdk

https://telegram-bot-sdk.readme.io/v2.0/reference

sdk文档:

https://telegram-bot-sdk.readme.io/docs

安装

composerrequireirazasyed/telegram-bot-sdk

这个sdk包含了所有的telegrambotapi,例如支持command,keyboard,webhook

参考文档:

https://fullmeter.com/blog/?p=14

http://stackoverflow.com/questions/32423837/telegram-bot-how-to-get-a-group-chat-id-ruby-gem-telegram-bot

https://core.telegram.org/bots

https://core.telegram.org/bots/api

相关推荐

zhangguoxiang / 0评论 2019-10-22