В телеграмм нет возможности изменять цвета, поэтому приходится извращаться разными методами.
Данный пример показывает цветом устройства RGB и при нажатии на кнопку предлагает установить новое значение.
Команда:
include_once(DIR_MODULES . 'telegram/telegram.class.php');
$telegram_module = new telegram();
//$off = json_decode('"'.'\ud83c\udf11'.'"');
//$on = json_decode('"'.'\uD83C\uDF15'.'"');
//u263c
$black = json_decode('"'.'\ud83c\udf11'.'"');
$orange = json_decode('"'.'\ud83c\udf4a'.'"');
$blue = json_decode('"'.'\ud83d\udd35'.'"');
$green = json_decode('"'.'\ud83d\udc9a'.'"');
$red = json_decode('"'.'\u2764\ufe0f'.'"');
$white = json_decode('"'.'\ud83d\udd4a'.'"');
$grey = json_decode('"'.'\ud83d\udc7b'.'"');
$pink = json_decode('"'.'\ud83d\ude08'.'"');
$yellow = json_decode('"'.'\ud83c\udf15'.'"');
//ud83c\udf11
$class='SRGB';
$objects=getObjectsByClass("SRGB");
//print_r($objects);
foreach($objects as $obj) {
$state = $off;
if (gg($obj['TITLE'].".color ") )
$state = $on;
$color=gg($obj['TITLE'].".color ");
$arr =str_split($color, 2);
$r=hexdec($arr[0]);
$g=hexdec($arr[1]);
$b=hexdec($arr[2]);
$textcolor=rgb2text($r, $g,$b);
if ($textcolor=='зеленый') $char=$green;
if ($textcolor=='желтый') $char=$yellow;
if ($textcolor=='синий') $char=$blue;
if ($textcolor=='красный') $char=$red;
if ($textcolor=='черный') $char=$black;
if ($textcolor=='голубой') $char=$blue;
if ($textcolor=='фиолетовый') $char=$violet;
if ($textcolor=='розовый') $char=$pink;
$option[] = $telegram_module->buildInlineKeyboardButton($text=$char." ".getObject($obj['TITLE'])->description,"","Callback_rgb_select_".$obj['TITLE'],"");
}
$count_row = 3;
$option = array_chunk($option, $count_row);
$keyb = $telegram_module->buildInlineKeyBoard($option);
$content = array('chat_id' => $chat_id, 'text' => "Устройства: ".$class, 'reply_markup' => $keyb, 'parse_mode' => 'HTML');
$telegram_module->sendContent($content);
function rgb2text($r,$g,$b){
//определяем, что сейчас за цвет
//http://www.manhunter.ru/webmaster/1028_opredelenie_osnovnogo_cveta_izobrazheniya_na_php.html
// Перевести RGB в HSV
$R=($r/255);
$G=($g/255);
$B=($b/255);
$maxRGB=max(array($R, $G, $B));
$minRGB=min(array($R, $G, $B));
$delta=$maxRGB-$minRGB;
// Цветовой тон
if ($delta!=0) {
if ($maxRGB==$R) {
$h=(($G-$B)/$delta);
}
elseif ($maxRGB==$G) {
$h=2+($B-$R)/$delta;
}
elseif ($maxRGB==$B) {
$h=4+($R-$G)/$delta;
}
$hue=round($h*60);
if ($hue<0) { $hue+=360; }
}
else {
$hue=0;
}
// Насыщенность
if ($maxRGB!=0) {
$saturation=round($delta/$maxRGB*100);
}
else {
$saturation=0;
}
// Яркость
$value=round($maxRGB*100);
// Яркость меньше 30%
if ($value<30) {
// Черный
// $color='#000000';
$textcolor='черный';
}
// Яркость больше 85% и насыщенность меньше 15%
elseif ($value>85 && $saturation<15) {
// Белый
// $color='#FFFFFF';
$textcolor='белый';
}
// Насыщенность меньше 25%
elseif ($saturation<25) {
// Серый
// $color='#909090';
$textcolor='серый';
}
// Определить цвет по цветовому тону
else {
// Красный
if ($hue>320 || $hue<=40) {
// $color='#FF0000';
$textcolor='красный';
}
// Розовый
elseif ($hue>260 && $hue<=320) {
// $color='#FF00FF';
$textcolor='розовый';
}
// Синий
elseif ($hue>190 && $hue<=260) {
// $color='#0000FF';
$textcolor='синий';
}
// Голубой
elseif ($hue>175 && $hue<=190) {
// $color='#00FFFF';
$textcolor='голубой';
}
// Зеленый
elseif ($hue>70 && $hue<=175) {
// $color='#00FF00';
$textcolor='зеленый';
}
// Желтый
else {
// $color='#FFFF00';
$textcolor='желтый';
}
}
return $textcolor;
}
Callback:
$sw = false;
include_once(DIR_MODULES . 'telegram/telegram.class.php');
$telegram_module = new telegram();
//$telegram_module->sendMessageToAll($callback);
//$telegram_module->sendMessageToAll(substr($callback,0,12));
//$telegram_module->sendMessageToAll(substr($callback,15));
if (substr($callback,0,19) == 'Callback_rgb_select')
{
$telegram_module->sendMessageToAll(substr($callback,20));
$color=array();
$color["black"]=json_decode('"'.'\ud83c\udf11'.'"');
$color["orange"]= json_decode('"'.'\ud83c\udf4a'.'"');
$color["blue"] = json_decode('"'.'\ud83d\udd35'.'"');
$color["green"] = json_decode('"'.'\ud83d\udc9a'.'"');
$color["red"] = json_decode('"'.'\u2764\ufe0f'.'"');
$color["white"] = json_decode('"'.'\ud83d\udd4a'.'"');
$color["grey"] = json_decode('"'.'\ud83d\udc7b'.'"');
$color["pink"] = json_decode('"'.'\ud83d\ude08'.'"');
$color["yellow"] = json_decode('"'.'\ud83c\udf15'.'"');
//print_r($objects);
foreach($color as $obj=>$key) {
//$telegram_module->sendMessageToAll($obj.$key);
//$option[] = $this->buildInlineKeyboardButton($text=$obj['key'],"","CallbackMode_rejim_".$obj['TITLE'],"");
$option[] = $this->buildInlineKeyboardButton($text=$key,"","Callback_rgb_set_".substr($callback,20).'_'.$obj,"");
}
$count_row = 3;
$option = array_chunk($option, $count_row);
$keyb = $this->buildInlineKeyBoard($option);
$this->editMessage($chat_id,$message_id,"Выберите цвет:",$keyb);
}
if (substr($callback,0,16) == 'Callback_rgb_set')
{
$ar=explode('_',$callback);
$color=$ar[4];
$obj=$ar[3];
$telegram_module->sendMessageToAll('Устанавливаем цвет '.$color.' для '.$obj) ;
if ($color=='yellow') $newcolor='ffff00';
if ($color=='black') $newcolor='000000';
if ($color=='red') $newcolor='ff0000';
if ($color=='green') $newcolor='00ff00';
if ($color=='orange') $newcolor='ffa500';
if ($color=='white') $newcolor='ffffff';
if ($color=='grey') $newcolor='c0c0c0';
if ($color=='pink') $newcolor='ff00ff';
if ($color=='blue') $newcolor='0000ff';
setglobal($obj.'.color', $newcolor);
}
// cm(substr($callback,15).".switch");
Екатеринбург, Россия
На форуме: directman66