搭建telegram机器人

234次阅读
没有评论

共计 4180 个字符,预计需要花费 11 分钟才能阅读完成。

项目地址:https://github.com/546669204/Telegram-Push-Bot

telegram机器人是个 十分方便的提醒方式,比qq或者微信都方便的多,而且支持很多消息格式,这点就十分重要,并且不像qq或者微信需要经常从官方的代码中提取api,如果更新就不能用了,但是tg这个是官方提供的,不会失效,用来做提醒再好不过了

使用指南

1.增加botfather电报

2.输入 /newbot

3.输入您BOT名称(注意要以bot或者BOT结尾

4.本次系统会回复你 token

5. token替换bot.php中的

6.set web hook:访问此网址(https://api.telegram.org/bot[Token]/setWebhook?url=https://[domain]/bot.php

7.开始使用


/start添加机器人后发送将获得sckey 
将机器人添加到频道并设置管理员发送/start将获得sckey

发送消息POST http:// [domain] /bot.php

method = send&sckey = [XXX]&content = [CONTENT]

代码:

<?php
function go_curl($url, $type, $data = false, &$err_msg = null, $timeout = 20, $cert_info = array(),$proxy = "",$cookie = "recookie.txt"){
	$type = strtoupper($type);
	if ($type == 'GET' && is_array($data)) {
		$data = http_build_query($data);
	}
	$option = array();
	if ( $type == 'POST' ) {
		$option[CURLOPT_POST] = 1;
	}
	if ($data) {
		if ($type == 'POST') {
			$option[CURLOPT_POSTFIELDS] = $data;
		} elseif ($type == 'GET') {
			$url = strpos($url, '?') !== false ? $url.'&'.$data :  $url.'?'.$data;
		}
	}
	$option[CURLOPT_URL]            = $url;
	$option[CURLOPT_FOLLOWLOCATION] = TRUE;
	$option[CURLOPT_MAXREDIRS]      = 4;
	$option[CURLOPT_RETURNTRANSFER] = TRUE;
	$option[CURLOPT_TIMEOUT]        = $timeout;
	//设置证书信息
	if(!empty($cert_info) && !empty($cert_info['cert_file'])) {
		$option[CURLOPT_SSLCERT]       = $cert_info['cert_file'];
		$option[CURLOPT_SSLCERTPASSWD] = $cert_info['cert_pass'];
		$option[CURLOPT_SSLCERTTYPE]   = $cert_info['cert_type'];
	}
	//设置CA
	if(!empty($cert_info['ca_file'])) {
		// 对认证证书来源的检查,0表示阻止对证书的合法性的检查。1需要设置CURLOPT_CAINFO
		$option[CURLOPT_SSL_VERIFYPEER] = 1;
		$option[CURLOPT_CAINFO] = $cert_info['ca_file'];
	} else {
		// 对认证证书来源的检查,0表示阻止对证书的合法性的检查。1需要设置CURLOPT_CAINFO
		$option[CURLOPT_SSL_VERIFYPEER] = 0;
	}

	if(!empty($proxy)){
		$proxy_arr = explode(":",$proxy);
		$option[CURLOPT_PROXYAUTH]   = CURLAUTH_BASIC;
		$option[CURLOPT_PROXYTYPE]   = CURLPROXY_HTTP;
		$option[CURLOPT_PROXY]   = $proxy_arr[0];
		$option[CURLOPT_PROXYPORT]   = $proxy_arr[1];
		//$option[CURLOPT_PROXYUSERPWD]   = "user:pass";
	}

	if(!empty($cookie)){
		if (is_file($cookie)){
			$option[CURLOPT_COOKIEFILE]   = $cookie;
		}else{
			$option[CURLOPT_COOKIE]   = $cookie;
		}
		$option[CURLOPT_COOKIEJAR]   = "recookie.txt";
	}

	$ch = curl_init();
	curl_setopt_array($ch, $option);
	$response = curl_exec($ch);
	$curl_no  = curl_errno($ch);
	$curl_err = curl_error($ch);
	curl_close($ch);
	// error_log
	if($curl_no > 0) {
		if($err_msg !== null) {
			$err_msg = '('.$curl_no.')'.$curl_err;
		}
	}
	return $response;
}
function authcode($string,$operation='DECODE',$key='',$expiry=0){
	$ckey_length=4;
	$key=md5($key ? $key:"hcaiyue.top");
	$keya=md5(substr($key,0,16));
	$keyb=md5(substr($key,16,16));
	$keyc=$ckey_length ? ($operation=='DECODE' ? substr($string,0,$ckey_length):substr(md5(microtime()),-$ckey_length)):'';
	$cryptkey=$keya.md5($keya.$keyc);
	$key_length=strlen($cryptkey);
	$string=$operation=='DECODE' ? base64_decode(substr($string,$ckey_length)):sprintf('%010d',$expiry ? $expiry+time():0).substr(md5($string.$keyb),0,16).$string;
	$string_length=strlen($string);
	$result='';
	$box=range(0,255);
	$rndkey=array();
	for($i=0;$i<=255;$i++){
		$rndkey[$i]=ord($cryptkey[$i%$key_length]);
	}
	for($j=$i=0;$i<256;$i++){
		$j=($j+$box[$i]+$rndkey[$i])%256;
		$tmp=$box[$i];
		$box[$i]=$box[$j];
		$box[$j]=$tmp;
	}
	for($a=$j=$i=0;$i<$string_length;$i++){
		$a=($a+1)%256;
		$j=($j+$box[$a])%256;
		$tmp=$box[$a];
		$box[$a]=$box[$j];
		$box[$j]=$tmp;
		$result.=chr(ord($string[$i]) ^ ($box[($box[$a]+$box[$j])%256]));
	}
	if($operation=='DECODE'){
		if((substr($result,0,10)==0||substr($result,0,10)-time()>0)&&substr($result,10,16)==substr(md5(substr($result,26).$keyb),0,16)){
			return substr($result,26);
		}else{
			return'';
		}
	}else{
		return $keyc.str_replace('=','',base64_encode($result));
	}
}
function sendmessage($data){
	go_curl("https://api.telegram.org/bot[token]/sendMessage","POST",$data);
}
//file_put_contents("text.txt",file_get_contents("php://input")."\n\n\n",FILE_APPEND); //debug output
if (isset($_POST["method"]) && $_POST["method"] == "send"){
	$data = [];
	$data["chat_id"] = authcode($_POST["sckey"]);
	$data["text"] = $_POST["content"];
	sendmessage($data);
	return;
}
$a = json_decode(file_get_contents("php://input"),true);
if ($a["message"]["text"] == "/start"){
    $data = [];
    $data["chat_id"] = $a["message"]["chat"]["id"];
    $data["text"] = authcode($a["message"]["chat"]["id"],"ENCODE");
    sendmessage($data);
}
if ($a["channel_post"]["text"] == "/start"){
    $data = [];
    $data["chat_id"] = $a["channel_post"]["chat"]["id"];
    $data["text"] = authcode($a["channel_post"]["chat"]["id"],"ENCODE");
    sendmessage($data);
}
?>
正文完
 
admin
版权声明:本站原创文章,由 admin 2019-11-03发表,共计4180字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)
验证码