Страница 4 из 4
Re: чтение RSS + другие скрипты
Добавлено: Вс июл 01, 2018 2:30 pm
Sas
Обновил скрипт анекдотов в блоге и выложил скрипт текст в цифры
Анекдоты теперь умеют: "расскажи 5 анекдотов" для пяти анекдотов или "расскажи анекдот" для одного
просто лень постоянно говорить расскажи анекдот или повтори для следующего анекдота
Ссылка на блог
Re: чтение RSS + другие скрипты
Добавлено: Вс окт 13, 2019 8:58 am
vitosmaxim80sad145
fandaymon писал(а): ↑Вс июн 17, 2018 11:42 pm
Sas писал(а): ↑Вс июн 17, 2018 11:19 pm
Запилил простой калькулятор. может использоваться как голосом так и через телегу/терминал
Писать можно как 2+2 так и 2 + 2 и хоть 2 +2.
Умеет считать 2 + 2 и проценты
например: 30% от 1000, или 1000 - 30%.
чтоб говорила голосом измените 10 в sayReply на свое значение
сам код.
Код: Выделить всё
//$matches[2]='30% от 1500';
global $sum;
//калькулятор
function PERC($a,$b){
global $sum;
$sum=($a * $b)/100;
}
function INCR($a,$b){
global $sum;
$sum=($a * $b);
}
function DECR($a,$b){
global $sum;
$sum=($a / $b);
}
function MINUS($a,$b){
global $sum;
$sum=($a - $b);
}
function PLUS($a,$b){
global $sum;
$sum=($a + $b);
}
//если все пришло в одну строку то разбиваем ее на массив
//eсли несколько аргументов то смотрим все и создаем из них массив
if(empty($matches[2])){
$dig=preg_replace('/(\d+)/', '${1} ',$matches[2]);
$mas[]=preg_split( '/(\-|\+|\*|\/|\%)/', $dig);
$op=preg_replace('/x/','*',$matches[2]);
$op=preg_replace('/(\d+|\+|\-|\%|\*|\/)/', '${1} ',$op);
$mas[]=preg_split( '/(\d+| )/', $op );
}else{
foreach($matches as $ar) {
$ar=preg_replace('/[a-я]/isu','',$ar);
$ar=preg_replace('/x/','*',$ar);
$ar=preg_replace('/(\d+|\+|\-|\%|\*|\/)/','${1} ',$ar);
$ar=split(' ',$ar);
$mas[]=$ar;
}
}
//обрабатываем массив чисел и символов и создаем из них два массива: первый с числами второй с символами
foreach($mas as $or){
foreach ($or as $sym){
$sym=preg_replace('/ /','',$sym);
if (strlen($sym) !="0" ){
if (is_numeric($sym)){
$digit[]=$sym;
}else{
$oper[]=$sym;
}
}
}
}
if(in_array('%',$oper)){
if(array_search('%',$oper) == '0'){
$a=$digit[0];
$b=$digit[1];
PERC($a,$b);
$s="$a% от $b ";
}else {
$a=$digit[0];
$b=$digit[1];
PERC($a,$b);
$digit[1]=$sum;
$s="$b%";
}
}
if(in_array('*',$oper)){
$a=$digit[0];
$b=$digit[1];
INCR($a,$b);
$s="$a умножить на $b";
}
if(in_array('/',$oper)){
$a=$digit[0];
$b=$digit[1];
DECR($a,$b);
$s="$a разделить на $b";
}
if(in_array('+',$oper)){
$a=$digit[0];
$b=$digit[1];
PLUS($a,$b);
$s="$a плюс $b";
}
if(in_array('-',$oper)){
$a=$digit[0];
$b=$digit[1];
MINUS($a,$b);
$s="$a минус $b";
}
if ($sum){
sayReply("$s будет: $sum",10);
}else{
sayReply("Я не понимаю $matches[2]",10);
}
При помощи eval всё-таки гораздо короче реализуется
http://majordomo.smartliving.ru/forum/v ... =30#p82156
Более того - всякие дополнительные действия типа синуса или корня квадратного добавляются парой строчек
if (strpos($com,'квадратный корень из ')!== false) {
$com=str_replace('квадратный корень из','sqrt(',$com);
$com.=')';
}
пробовал и длинный калькулятор и по ссылке но не работают
создал шаблон сколько будет (.+) с кодом
08:45 Алиса: Ok, I'll remind you to 2+ 2
08:45 : 2+2
а если на компе пишеш 2 + 2 то отправляет2,2
08:56 Алиса: Ok, I'll remind you to 2 , 2
08:56 Виталий: 2 , 2
что не так
Re: [Сценарий] Получение и чтение RSS + другие скрипты
Добавлено: Вт окт 15, 2019 9:47 pm
vitosmaxim80sad145
А кто знает как сделать сцену чтобы можно было прочитать новость которую озвучила Алиса если заинтересовал заголовок
Re: [Сценарий] Получение и чтение RSS + другие скрипты
Добавлено: Вт окт 15, 2019 10:13 pm
xor
vitosmaxim80sad145 писал(а): ↑Вт окт 15, 2019 9:47 pm
А кто знает как сделать сцену чтобы можно было прочитать новость которую озвучила Алиса если заинтересовал заголовок
а как узнать, какой заголовок Алису заинтересовал? так то делай свойство, пиши туда интересную новость и это свойство выводи
Re: [Сценарий] Получение и чтение RSS + другие скрипты
Добавлено: Вт окт 15, 2019 10:26 pm
vitosmaxim80sad145
xor писал(а): ↑Вт окт 15, 2019 10:13 pm
vitosmaxim80sad145 писал(а): ↑Вт окт 15, 2019 9:47 pm
А кто знает как сделать сцену чтобы можно было прочитать новость которую озвучила Алиса если заинтересовал заголовок
а как узнать, какой заголовок Алису заинтересовал? так то делай свойство, пиши туда интересную новость и это свойство выводи
Ну не Алису заинтересовал а меня
и я спрашивал как сделать сцену чтобы когда Алиса читает заголовок на сцене писало новость ?
Re: [Сценарий] Получение и чтение RSS + другие скрипты
Добавлено: Вт окт 15, 2019 10:33 pm
xor
vitosmaxim80sad145 писал(а): ↑Вт окт 15, 2019 10:26 pm
Ну не Алису заинтересовал а меня
и я спрашивал как сделать сцену чтобы когда Алиса читает заголовок на сцене писало новость ?
https://kb.mjdm.ru/rss_channels_help/?u ... annelsHelp Читали?
оттуда
$params['TITLE'] -- заголовок новости
$params['BODY'] -- тело новости
ну вот боди и выводите в свойство и на сцену
Re: чтение RSS + другие скрипты
Добавлено: Чт янв 23, 2020 5:52 pm
Garik908
Sas писал(а): ↑Вс июл 01, 2018 2:30 pm
Обновил скрипт анекдотов в блоге и выложил скрипт текст в цифры
Анекдоты теперь умеют: "расскажи 5 анекдотов" для пяти анекдотов или "расскажи анекдот" для одного
просто лень постоянно говорить расскажи анекдот или повтори для следующего анекдота
Ссылка на блог
Можно про анедоты более подробно. Как куда и что... Пожалуйста, хочу слушать анекдоты.
Re: чтение RSS + другие скрипты
Добавлено: Пт янв 24, 2020 11:58 am
Garik908
xor писал(а): ↑Пт июн 15, 2018 1:19 am
При запуске
runScript('anekdot',array('UPDATE'=>TRUE));
Код: Выделить всё
$r=read_a();
if ( empty($r)){
sayReply("Новых анекдотов нет, обновляю список",10);
update_a();
read_a();
}elseif($params['UPDATE']){
update_a(); // сюда попадаем при 'UPDATE'=>TRUE
}else{
sayReply("$r",10); // чтобы посмеяться надо сюда
}
ведь только обновление идет.
Попробуйте
runScript('anekdot',array('UPDATE'=>FALSE));
или просто
runScript('anekdot');
Добрый день! При runScript('anekdot'); выпадает это: Warning: Illegal string offset 'UPDATE' in C:\_majordomo\htdocs\modules\scripts\scripts.class.php(159) : eval()'d code on line 34. с чем это связано? ( У меня вин7) Если вручную нажать, запустить на скрип, то то же эта ошибка. А при runScript('anekdot',array('UPDATE'=>FALSE)); то пока нормально.