Перейти к содержимому


Готовые скрипты


Сообщений в теме: 70

#1 pankrat

    Профи

  • Модераторы
  • 463 сообщений
  • ГородРоссия - Курск

Отправлено 24 Март 2009 - 02:05

Для посетителей темы:
    В данной теме выкладываются только готовые скрипты, которые прошли тест и 100% рабочие.
    Вопросы типа: "А как его установить?", "А у меня нифига не работает" и т.д. будут незамедлительно удалены!

Для тех кто выкладывает скрипты:
    Указываем название скрипта
    Указываем смысл его работы
    Указываем процесс установки
    Так же можно указать какие либо дополнительные указания, пожелания, требования по использованию вашего скрипта

Если скрипт принадлежит не вам:
    Указываем координаты автора скрипта
    Скрипты разрешается выкладывать только с разрешения автора.

Если вы автор скрипта и он был выложен без вашего согласия:
    Незамедлительно сообщите администрации
    Предоставьте доказательство принадлежности скрипта вам.


#2 pankrat

    Профи

  • Модераторы
  • 463 сообщений
  • ГородРоссия - Курск

Отправлено 24 Март 2009 - 02:16

Название: Руссификатор команд
Смысл работы: Данный скрипт добавляет в ваш чат команды на русском языке
Установка: Необходимо заменить содержимое файла start.bsh на ниже приведённый код.
Файл start.bsh находится в: "Папка_вашего_бота\services\ChatBot\scripts
Дополнительно: Руссифицированные команды в скрипте вы можете изменять на свой вкус, только будьте при этом придельно внимательны, один неправильный символ и ваш скрипт работать не будет.
/**
* Данный скрипт запускается при старте бота. Здесь можно указать команды подключения или
* инициализации внешних программных средств - баз данных, програмных оболочек и т.п.
**/
 
/**
 * При вызове скрипта определены следующие переменные:
 * AbstractServer srv
 */
 
 
import ru.jimbot.modules.AbstractServer;
import ru.jimbot.util.*;
import ru.jimbot.modules.chat.*;
import ru.jimbot.modules.*;
 
Log.info("Запуск бота...");
out="Ok";
 
// Добавляем псевдонимы к существующим командам бота
// Новые команды и полномочия добавятся автоматически при установке скриптов
//Руссификация команд чата - 7.02.09 (с) pankrat
((ChatCommandProc)srv.cmd).addCommand("!справка", new Cmd("!справка","",2)); //Команда спраки по боту
((ChatCommandProc)srv.cmd).addCommand("!чат", new Cmd("!чат","",3)); //Команда входа в чат
((ChatCommandProc)srv.cmd).addCommand("!выход", new Cmd("!выход","",4)); //Команда выхода из чата
((ChatCommandProc)srv.cmd).addCommand("!правила", new Cmd("!правила","",5)); //Вывод правил чата
((ChatCommandProc)srv.cmd).addCommand("!стат", new Cmd("!стат","",6)); // Статистика ЮИН'ов
((ChatCommandProc)srv.cmd).addCommand("!свюин", new Cmd("!свюин","",7)); // Переход на свободный ЮИН
((ChatCommandProc)srv.cmd).addCommand("!юин", new Cmd("!юин","$n",8)); // Переход на ЮИН  №1,2,3 и т.д.
((ChatCommandProc)srv.cmd).addCommand("!приглашение", new Cmd("!приглашение","",9)); //Создание приглашения в чат
((ChatCommandProc)srv.cmd).addCommand("!банлист", new Cmd("!банлист","",10)); //Просмотр Бан листа
((ChatCommandProc)srv.cmd).addCommand("!киклист", new Cmd("!киклист","",11)); //Просмотр кик листа
((ChatCommandProc)srv.cmd).addCommand("!инфо", new Cmd("!инфо","$c",12)); //Просмотр инфы о юзере
((ChatCommandProc)srv.cmd).addCommand("!кик", new Cmd("!кик","$c $n $s",13)); //Команда КИКа
((ChatCommandProc)srv.cmd).addCommand("!киквсех", new Cmd("!киквсех","",14)); //Общий КИК
((ChatCommandProc)srv.cmd).addCommand("!кто", new Cmd("!кто", "$n",16)); //Список последних ников юзера
 ((ChatCommandProc)srv.cmd).addCommand("!листгрупп", new Cmd("!листгрупп","",17)); //Список групп юзеров
((ChatCommandProc)srv.cmd).addCommand("!группа", new Cmd("!группа","$n $c",19)); //Присвоить группу юзеру
((ChatCommandProc)srv.cmd).addCommand("!бан", new Cmd("!бан","$c $s",22)); //Команда БАНа
((ChatCommandProc)srv.cmd).addCommand("!убан", new Cmd("!убан","$c",23)); //Снять БАН
((ChatCommandProc)srv.cmd).addCommand("!ник", new Cmd("!ник","$c $c",24)); //Регистрация, смена ника
((ChatCommandProc)srv.cmd).addCommand("+тут", new Cmd("+тут","",25)); // Список юзеров в комнате
((ChatCommandProc)srv.cmd).addCommand("+лс", new Cmd("+лс","$n $s",26)); //Отправить в приват
((ChatCommandProc)srv.cmd).addCommand("+ответ", new Cmd("+ответ","$s",27)); //Ответ на последний приват
((ChatCommandProc)srv.cmd).addCommand("!тема", new Cmd("!тема","$s",28)); //Установить тему комнаты
((ChatCommandProc)srv.cmd).addCommand("!комната", new Cmd("!комната","$n",33));  //Переход в комнату
((ChatCommandProc)srv.cmd).addCommand("!ктопригл", new Cmd("!ктопригл","$n",34)); //вывод цепочки приглашений
((ChatCommandProc)srv.cmd).addCommand("!кикист", new Cmd("!кикист","",35)); //История КИКов
((ChatCommandProc)srv.cmd).addCommand("!adm", new Cmd("!adm","$s",36)); //Написать сообщение админу
((ChatCommandProc)srv.cmd).addCommand("!банист", new Cmd("!банист","",37)); //История БАНов
((ChatCommandProc)srv.cmd).addCommand("+все", new Cmd("+все","",38)); //Списов юзеров в чате
((ChatCommandProc)srv.cmd).addCommand("!комнаты", new Cmd("!комнаты","",40)); //Список доступных комнат
((ChatCommandProc)srv.cmd).addCommand("!создкомн", new Cmd("!создкомн","$n $s",41)); //Создать комнату
((ChatCommandProc)srv.cmd).addCommand("!измкомн", new Cmd("!измкомн","$n $s",42)) //Переименовать комнату


#3 Sushka

    Профи

  • Модераторы
  • 741 сообщений
  • ГородСмоленск

Отправлено 24 Март 2009 - 10:03

Название: Отправка сообщения во все комнаты
Назначение: Скрипт предназначен для отправки сообщения во все комнаты
Установка: Для работы скрипта его нужно скопировать в папку \services\Имя_сервиса_чата\scripts\command

/*
 * Скрипт предназначен для отправки сообщения во все комнаты
 * Сообщение добавляется в общую очередь чата в виде "SYSTEM MESSAGE: текст вашего сообщения"
 *
 * Пример использование команды: "!send  Уважаемые пользователи, кто хочет стать модератором, наберите !выход"
 * (c) Sushka 2009
 */
 
import ru.jimbot.modules.AbstractServer;
import ru.jimbot.util.*;
import ru.jimbot.modules.chat.*;
import ru.jimbot.modules.*;

if(in.equals("install")){
//!send - название команды, при желании можно изменить на свое
	cmd.addCommand("!send", new Cmd("!send","$s",39,name));
	cmd.addAuth("allroom_message","Сообщение во все комнаты");
	out="Ok";
	return;
}
 
 
if(!cmd.isChat(proc,uin) && !cmd.psp.testAdmin(uin)) return;
if(!cmd.auth(proc,uin, "allroom_message")) return;
 
try{
	Vector v = cmd.getParser().parseArgs(msg);
	String smsg = (String)v.get(0);
 
	if(smsg.equals("")||smsg.equals(" "))return;
 
	Set rid = new HashSet();		
 
	 Enumeration e = cmd.srv.cq.uq.keys();
	while(e.hasMoreElements()){
            String i = e.nextElement();
			Users us = cmd.srv.us.getUser(i);
			if(us.state==UserWork.STATE_CHAT) 
				rid.add(us.room);
    }
 
	for (int i:rid){
//если SYSTEM MESSAGE не устраивает- меняем на свое. 
		cmd.srv.cq.addMsg("\nSYSTEM MESSAGE: "+ smsg+"\n", uin, i);
	}
 
	proc.mq.add(uin,"Сообщение отправленно");
} catch (Exception ex) {
    ex.printStackTrace();
    proc.mq.add(uin,"Ошибка "+ex.getMessage());
}


#4 Imda

    Новичок

  • Пользователи
  • Pip
  • 32 сообщений
  • ГородОттуда

Отправлено 26 Март 2009 - 00:21

Название: OpChat
Смысл: Общение только между всеми операторами в чате, виден во всех комнатах, отображаться будет как
OpChat: >
Установка: Создать файл в папке ./services/ChatBot/scripts/command

/**
 * Отправка всем опам, на базе скриптов "запереть в комнате" и "отослать во все комнаты"
 * 
 * Imda
 */
 
import ru.jimbot.modules.AbstractServer;
import ru.jimbot.util.*;
import ru.jimbot.modules.chat.*;
import ru.jimbot.modules.*;
 
if(in.equals("install")){
    cmd.addCommand("%", new Cmd("%","$s",39,name));
    cmd.addAuth("OpChat","доступ к опчату");
    out="Ok";
    return;
}
 
 
if(!cmd.isChat(proc,uin) && !cmd.psp.testAdmin(uin)) return;
if(!cmd.auth(proc,uin, "OpChat")) return;
 
try{
    Vector v = cmd.getParser().parseArgs(msg);
    String smsg = (String)v.get(0);
    if(smsg.equals("")||smsg.equals(" "))return;
    Enumeration e = cmd.srv.cq.uq.keys();
    while(e.hasMoreElements()){
	String i = e.nextElement();
	Users us = cmd.srv.us.getUser(i);
	if (cmd.srv.us.authorityCheck(i, "OpChat"))
	{
		cmd.srv.getIcqProcess(us.basesn).mq.add(us.sn,"OpChat: "+cmd.srv.us.getUser(uin).localnick+"> " + smsg);
	}

} 
} catch (Exception ex) {
    ex.printStackTrace();
    proc.mq.add(uin,"Ошибка "+ex.getMessage());
}


#5 Imda

    Новичок

  • Пользователи
  • Pip
  • 32 сообщений
  • ГородОттуда

Отправлено 26 Март 2009 - 00:28

Название: Админчат \ Комната-отстойник
Смысл: 2 комнаты с ограниченым допуском, для Опов, и для провинившихся. Вторую лучше юзать с переписанным скриптом бана в комнате
Установка:
1)Создать 2 комнаты с номерами 7 и 9 (при желании - переделайте)
2)Создать файлы в папке ./services/ChatBot/scripts/command
Замена перехода по комнатам:
/**
 * Скрипт для расширения команд чата
 */

/**
 * При вызове скрипта определены следующие переменные:
 * ChatCommandProc cmd - ссылка на обработчик команд
 * IcqProtocol proc - ссылка на процесс обработки icq
 * String msg - текст сообщения с командой
 * String uin - кто отправил сообщение
 * String name - имя этого файла (при процедуре инсталяции скрипта)
 */

import ru.jimbot.modules.AbstractServer;
import ru.jimbot.util.*;
import ru.jimbot.modules.chat.*;
import ru.jimbot.modules.*;

//Установка скрипта как обработчика команды
if(in.equals("install")){
	cmd.addCommand("!ком", new Cmd("!ком","$n",39,name));
	cmd.addCommand("!r", new Cmd("!r","$n",39,name));
	cmd.addCommand("!к", new Cmd("!к","$n",39,name));
	cmd.addCommand("!room", new Cmd("!room","$n",39,name));
	cmd.addAuth("room","Переход по комнатам");
	out="Ok";
	return;
}

// Проверим полномочия
if(!cmd.isChat(proc,uin) && !cmd.psp.testAdmin(uin)) return;
if(!cmd.auth(proc,uin, "roomgo")) return;
    try{
       Vector v = cmd.getParser().parseArgs(msg);
       int i = (Integer)v.get(0);
         Users uss = cmd.srv.us.getUser(uin);
         if(uss.room==i){
         proc.mq.add(uin,"Ты уже сидишь в этой комнате!");
            } else if
	    (((cmd.qauth(proc,uin, "roomgo")) &&  (! (i==7) && !(i==9) ) && ((i==0) || (i==1) || (i==2) )) || (cmd.qauth(proc,uin, "anyroom") ) ){
                 cmd.srv.cq.addMsg(uss.localnick + " ушел из комнаты " + uss.room, uin, uss.room);
                 uss.room=i;
                 cmd.srv.us.updateUser(uss);
                 cmd.srv.cq.changeUserRoom(uin, i);
                 cmd.srv.cq.addMsg(uss.localnick + " вошел в комнату " + uss.room, uin, uss.room);
		 String sss = cmd.psp.loadText("./news.txt");
proc.mq.add(uin,cmd.srv.us.getUser(uin).localnick+", ты перешел в комнату\n" + i + " - " + cmd.srv.us.getRoom(i).getName()
	+"\nНовости: " + sss
	+"\nТема: " + cmd.srv.us.getRoom(i).getTopic()
	);

            } else if ( (i==7) || (i==9) || ((i!=0) && (i!=1) && (i!=2) && (i!=7) && (i!=9))) {
		 proc.mq.add(uin,"Тебе сюда нельзя.");
		    
	    } else if ((i!=0) && (i!=1) && (i!=2) && (i!=7) && (i!=9)){
                 proc.mq.add(uin,"Такой комнаты не существует! Некуда переходить.");
             }
        } catch (Exception ex) {
            ex.printStackTrace();
           proc.mq.add(uin,ex.getMessage());
        }


#6 Imda

    Новичок

  • Пользователи
  • Pip
  • 32 сообщений
  • ГородОттуда

Отправлено 26 Март 2009 - 00:29

Переписаный для использования "Отстойника" скрипт бана в комнате:
/**
 * Скрипт для расширения команд чата
 */

/**
 * При вызове скрипта определены следующие переменные:
 * ChatCommandProc cmd - ссылка на обработчик команд
 * IcqProtocol proc - ссылка на процесс обработки icq
 * String msg - текст сообщения с командой
 * String uin - кто отправил сообщение
 * String name - имя этого файла (при процедуре инсталяции скрипта)
 */

import ru.jimbot.modules.AbstractServer;
import ru.jimbot.util.*;
import ru.jimbot.modules.chat.*;
import ru.jimbot.modules.*;

//Установка скрипта как обработчика команды
if(in.equals("install")){
	cmd.addCommand("!банком", new Cmd("!банком","$n",39,name));
	cmd.addAuth("banroom","Запереть юзера в комнате");
	out="Ok";
	return;
}

// Проверим полномочия
if(!cmd.isChat(proc,uin) && !cmd.psp.testAdmin(uin)) return;
if(!cmd.auth(proc,uin, "banroom")) return;

try{
	Vector v = cmd.getParser().parseArgs(msg);
	int i1 = (Integer)v.get(0);
	Users u = cmd.srv.us.getUser(i1); 
	if(u.id==0){
		proc.mq.add(uin,"Пользователь не найден");
		return;
	}
	if(u.state!=UserWork.STATE_CHAT){
		proc.mq.add(uin,"Этого пользователя нет в чате.");
		return;
	}
	// Переводим в комнату
	if(u.room==7){
		proc.mq.add(uin,"Пользователь уже сидит в этой комнате");
		return;
		} else {
			u.room=7;
			cmd.srv.us.updateUser(u);
			cmd.srv.cq.changeUserRoom(u.sn, 7);
			// Оповещаем целевую комнату
			cmd.srv.cq.addMsg("У вас пополнение: "+u.localnick, u.sn, u.room);
			// Оповещаем юзера
			cmd.srv.getIcqProcess(u.basesn).mq.add(u.sn,"Поздравляем, Вы были признаны мусором и перемещены в мусоропровод.");
			// Лишаем юзера прав на комнаты
			cmd.srv.us.revokeUser(i1, "achat");
			cmd.srv.us.revokeUser(i1, "roomgo");
			cmd.srv.us.revokeUser(i1, "anyroom");
			
		}
	// Сообщаем об успешном выполнении команды
	proc.mq.add(uin,u.localnick + " выброшен в мусоропровод");
} catch (Exception ex) {
    ex.printStackTrace();
    proc.mq.add(uin,"Ошибка "+ex.getMessage());
} 


#7 Imda

    Новичок

  • Пользователи
  • Pip
  • 32 сообщений
  • ГородОттуда

Отправлено 26 Март 2009 - 00:30

Переписанный разбан комнаты:

/**
 * Скрипт для расширения команд чата
 */

/**
 * При вызове скрипта определены следующие переменные:
 * ChatCommandProc cmd - ссылка на обработчик команд
 * IcqProtocol proc - ссылка на процесс обработки icq
 * String msg - текст сообщения с командой
 * String uin - кто отправил сообщение
 * String name - имя этого файла (при процедуре инсталяции скрипта)
 */

import ru.jimbot.modules.AbstractServer;
import ru.jimbot.util.*;
import ru.jimbot.modules.chat.*;
import ru.jimbot.modules.*;

//Установка скрипта как обработчика команды
if(in.equals("install")){
	cmd.addCommand("!убанком", new Cmd("!убанком","$n",39,name));
	cmd.addAuth("banroom","Запереть юзера в комнате");
	out="Ok";
	return;
}

// Проверим полномочия
if(!cmd.isChat(proc,uin) && !cmd.psp.testAdmin(uin)) return;
if(!cmd.auth(proc,uin, "banroom")) return;

try{
	//Парсим строку аргументов
	Vector v = cmd.getParser().parseArgs(msg);
	//Согласно шаблону, аргумент должн быть числом
	int i1 = (Integer)v.get(0);
	// Находим юзера
	Users u = cmd.srv.us.getUser(i1); 
	// Проверяем есть ли такой юзер ваще?
	if(u.id==0){
		proc.mq.add(uin,"Пользователь не найден");
		return;
	}
	// Возвращаем права
	if (cmd.qauth(proc,u.sn, "OpChat")) { cmd.srv.us.grantUser(i1, "achat");}
	cmd.srv.us.grantUser(i1, "roomgo");
	if(u.state==UserWork.STATE_CHAT){
	    cmd.srv.getIcqProcess(u.basesn).mq.add(u.sn,"Тебе разрешено выходить за пределы этой комнаты");
	}
	// Сообщаем об успешном выполнении команды
	proc.mq.add(uin,"Пользователю " + u.localnick + " возвращены права на переход по комнатам");
} catch (Exception ex) {
    ex.printStackTrace();
    proc.mq.add(uin,"Ошибка "+ex.getMessage());
} 


#8 Imda

    Новичок

  • Пользователи
  • Pip
  • 32 сообщений
  • ГородОттуда

Отправлено 26 Март 2009 - 00:33

Название: Работа с новостями
Смысл: Создаем файл с новостями чата, доступный для просмотра обычным юзерам
Установка:
1)Создать файл в папке бота: news.txt
2)Создать файлы в папке ./services/ChatBot/scripts/command

/**
 * Скрипт для Чтения новостей
 */

/**
 * При вызове скрипта определены следующие переменные:
 * ChatCommandProc cmd - ссылка на обработчик команд
 * IcqProtocol proc - ссылка на процесс обработки icq
 * String msg - текст сообщения с командой
 * String uin - кто отправил сообщение
 * String name - имя этого файла (при процедуре инсталяции скрипта)
 */

import ru.jimbot.modules.AbstractServer;
import ru.jimbot.util.*;
import ru.jimbot.modules.chat.*;
import ru.jimbot.modules.*;

//Установка скрипта как обработчика команды
if(in.equals("install")){
	cmd.addCommand("!н", new Cmd("!н","",39,name));
	cmd.addCommand("!нов", new Cmd("!нов","",39,name));
	cmd.addCommand("!новости", new Cmd("!новости","",39,name));
	cmd.addCommand("!news", new Cmd("!news","",39,name));
	cmd.addAuth("News","Вывод новостей");
	out="Ok";
	return;
}

// Проверим полномочия
if(!cmd.isChat(proc,uin) && !cmd.psp.testAdmin(uin)) return;
if(!cmd.auth(proc,uin, "News")) return;

try{
	String s = cmd.psp.loadText("./news.txt");
	String[] ss = s.split("
");
	for(int i=0;i<ss.length;i++){
		proc.mq.add(uin,ss[i]);
	}
} catch (Exception ex) {
    ex.printStackTrace();
    proc.mq.add(uin,"Ошибка "+ex.getMessage());
} 

Создание новостей:
/**
 * Скрипт для расширения команд чата
 */

/**
 * При вызове скрипта определены следующие переменные:
 * ChatCommandProc cmd - ссылка на обработчик команд
 * IcqProtocol proc - ссылка на процесс обработки icq
 * String msg - текст сообщения с командой
 * String uin - кто отправил сообщение
 * String name - имя этого файла (при процедуре инсталяции скрипта)
 */

import ru.jimbot.modules.AbstractServer;
import ru.jimbot.util.*;
import ru.jimbot.modules.chat.*;
import ru.jimbot.modules.*;

//Установка скрипта как обработчика команды
if(in.equals("install")){
	cmd.addCommand("!снов", new Cmd("!снов","$s",39,name));
	cmd.addAuth("MakeNews","Создание новости");
	out="Ok";
	return;
}

// Проверим полномочия
if(!cmd.isChat(proc,uin) && !cmd.psp.testAdmin(uin)) return;
if(!cmd.auth(proc,uin, "MakeNews")) return;

try {
	Vector v = cmd.getParser().parseArgs(msg);
	String sn = (String)v.get(0);
	java.sql.Time T = new java.sql.Time(new java.util.Date().getTime());
	java.sql.Date D = new java.sql.Date(new java.util.Date().getTime());
	OutputStreamWriter ow = new OutputStreamWriter(new FileOutputStream("./news.txt",true),"windows-1251");
	String s = "[" + D +" "+ T + "] "  + "n" + sn + "nn";
	ow.write(s);
	ow.close();
	
	Set rid = new HashSet();        
	Enumeration e = cmd.srv.cq.uq.keys();
	while(e.hasMoreElements()){
            String i = e.nextElement();
            Users us = cmd.srv.us.getUser(i);
            if(us.state==UserWork.STATE_CHAT) 
            rid.add(us.room);
    	}
     	for (int i:rid){ 
		cmd.srv.cq.addMsg("Новость> "+ sn , uin, i);
    	}
	Log.talk("Новость создана: " + sn);
	proc.mq.add(uin,"Новость успешно создана и разослана: n"+sn);
} catch (Exception ex) {
	ex.printStackTrace();
	Log.talk("Error save msg: " + ex.getMessage());
	proc.mq.add(uin,"Ошибка добавления");
}


#9 Imda

    Новичок

  • Пользователи
  • Pip
  • 32 сообщений
  • ГородОттуда

Отправлено 26 Март 2009 - 00:40

Название: Список админов в комнате
Смысл: Вывод списка модераторов по форме
Администрация:\n
id - nick, [roomid]roomname

Установка:
1)Установить скрипт OpChat или создать соответствующие полномочия
2)Создать файлы в папке ./services/ChatBot/scripts/command

/**
 * Отправка всем опам, на базе "запереть в комнате" и "отослать во все комнаты"
 * 
 */
 
import ru.jimbot.modules.AbstractServer;
import ru.jimbot.util.*;
import ru.jimbot.modules.chat.*;
import ru.jimbot.modules.*;
 
//для работы в тест9 этот участок кода удалите и пропишите в скрипте start.bsh пропишите команду и полномочие
if(in.equals("install")){
//!send - название команды, при желании можно изменить на свое
    cmd.addCommand("!админы", new Cmd("!админы","",39,name));
    cmd.addAuth("AdminList","Получить список админов");
    out="Ok";
    return;
}
 
 
if(!cmd.isChat(proc,uin) && !cmd.psp.testAdmin(uin)) return;
if(!cmd.auth(proc,uin, "AdminList")) return;
 
try{
    String lst = "";
    Enumeration e = cmd.srv.cq.uq.keys();
    while(e.hasMoreElements()){
	String i = e.nextElement();
	Users us = cmd.srv.us.getUser(i);
	if (cmd.srv.us.authorityCheck(i, "OpChat"))
	{
		lst = lst + us.id+" - "+us.localnick+" , ["+us.room+"]"+cmd.srv.us.getRoom(us.room).getName()+"; \n";
	}

} 
 proc.mq.add(uin,"Администрация: \n "+lst);
} catch (Exception ex) {
    ex.printStackTrace();
    proc.mq.add(uin,"Ошибка "+ex.getMessage());
}


#10 Imda

    Новичок

  • Пользователи
  • Pip
  • 32 сообщений
  • ГородОттуда

Отправлено 26 Март 2009 - 22:42

Название: Перемещение новостей в архив
Смысл: Перемещение всех новостей в архив, очистка файла новостей
Установка:
1)Создать в корне бота папку archive
2)Создать файлы в папке ./services/ChatBot/scripts/command


/**
 * Скрипт для перемещения файлов с новостями в архив
 * Imda
 */

/**
 * При вызове скрипта определены следующие переменные:
 * ChatCommandProc cmd - ссылка на обработчик команд
 * IcqProtocol proc - ссылка на процесс обработки icq
 * String msg - текст сообщения с командой
 * String uin - кто отправил сообщение
 * String name - имя этого файла (при процедуре инсталяции скрипта)
 */

import ru.jimbot.modules.AbstractServer;
import ru.jimbot.util.*;
import ru.jimbot.modules.chat.*;
import ru.jimbot.modules.*;

//Установка скрипта как обработчика команды
if(in.equals("install")){
	cmd.addCommand("!уднов", new Cmd("!уднов","",39,name));
	cmd.addAuth("DelNews","Удаление новостей");
	out="Ok";
	return;
}

// Проверим полномочия
if(!cmd.isChat(proc,uin) && !cmd.psp.testAdmin(uin)) return;
if(!cmd.auth(proc,uin, "DelNews")) return;

try {
				//Создади OutputStreamWriter которым будем писать в бак-копию=)
	OutputStreamWriter ow = new OutputStreamWriter(new FileOutputStream("./archive/newsbak",true),"windows-1251");
				//Объявим файл с новостями
	File news = new File ("./news.txt");
	if (news.exists()) 	//Проверка на наличие файла с новостями
	{
				//Подгрузим все новости которых еще нет в архиве, т.е. !ВЕСЬ! файл новостей
				//Пишем новости в файл и закрываем OutputStreamWriter
		String s = cmd.psp.loadText("./news.txt");
		ow.write(s);
		ow.close();
				//ЕСЛИ НЕ НУЖНО- ЗАКАММЕНТИРУЙТЕ! (очищение файла новостей)
				//Если закамментировано, то быть осторожным с коммандой очистки, чтобы не было дупликатов новостей)
		news.delete();
		OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("./news.txt",true),"windows-1251");
		osw.write("");
		osw.close();
		proc.mq.add(uin,"Новости отправлены в архив");	
		Log.talk("Новости отправлены в архив");
	}
	else proc.mq.add(uin,"Нет новостей");
} catch (Exception ex) {
	ex.printStackTrace();
	Log.talk("Error save msg: " + ex.getMessage());
	proc.mq.add(uin,"Ошибка удаления");
}


#11 Imda

    Новичок

  • Пользователи
  • Pip
  • 32 сообщений
  • ГородОттуда

Отправлено 26 Март 2009 - 23:43

Название: Вывод случайного анекдота из файла
Смысл: (См.выше)
Важно: скорей всего, этот скрипт сильно нагрузит сервер.
Установка:
1)Создать файл ./text/anekdots.txt , в конце анекдота -
2)Создать файлы в папке ./services/ChatBot/scripts/command

/**
 * Скрипт для вывода случайного анекдота из файла
 * Imda
 */

/**
 * При вызове скрипта определены следующие переменные:
 * ChatCommandProc cmd - ссылка на обработчик команд
 * IcqProtocol proc - ссылка на процесс обработки icq
 * String msg - текст сообщения с командой
 * String uin - кто отправил сообщение
 * String name - имя этого файла (при процедуре инсталяции скрипта)
 */

import ru.jimbot.modules.AbstractServer;
import ru.jimbot.util.*;
import ru.jimbot.modules.chat.*;
import ru.jimbot.modules.*;
import java.util.Random;

//Установка скрипта как обработчика команды
if(in.equals("install")){
	cmd.addCommand("!анек", new Cmd("!анек","$s",39,name));
	cmd.addCommand("!ха", new Cmd("!ха","$s",39,name));
	cmd.addAuth("Anek","Сервис анекдотов");
	out="Ok";
	return;
}

// Проверим полномочия
if(!cmd.isChat(proc,uin) && !cmd.psp.testAdmin(uin)) return;
if(!cmd.auth(proc,uin, "Anek")) return;

try {
	//Считываем анекдоты
	String s = cmd.psp.loadText("./text/anekdots.txt");
	//Разбиваем текст на куски, в качестве разделителя будем использовать 
	String[] ss = s.split("");
	int R = (int) ((Math.random()*ss.length));

	proc.mq.add(uin,"Anekdot>> \n"+ss[R]);
} catch (Exception ex) {
	ex.printStackTrace();
	Log.talk("Error save msg: " + ex.getMessage());
	proc.mq.add(uin,"Обшибка " + ex.getMessage());
}


#12 Imda

    Новичок

  • Пользователи
  • Pip
  • 32 сообщений
  • ГородОттуда

Отправлено 28 Март 2009 - 02:33

Название: Работа с личной инфой
Смысл:
Создаем и просматриваем инфу о юзерах.
Право InfoView дает право просматривать инфу о всех, кроме тех, для кого применен флаг IsModer. Для просмотра инфы таких юзеров, надо иметь право InfoViewMod
Для задания инфы о себе пишем комманду:
!осебе
для просмотра:
!инфо
Установка:
1)Создать папку UI в корне бота
2)Создать файлы скриптов в папке ./services/ChatBot/scripts/command
/**
 * Скрипт для задания личной инфы.
 * !осебе 
 * Imda
 */

/**
 * При вызове скрипта определены следующие переменные:
 * ChatCommandProc cmd - ссылка на обработчик команд
 * IcqProtocol proc - ссылка на процесс обработки icq
 * String msg - текст сообщения с командой
 * String uin - кто отправил сообщение
 * String name - имя этого файла (при процедуре инсталяции скрипта)
 */

import ru.jimbot.modules.AbstractServer;
import ru.jimbot.util.*;
import ru.jimbot.modules.chat.*;
import ru.jimbot.modules.*;

//Установка скрипта как обработчика команды
if(in.equals("install")){
	cmd.addCommand("!осебе", new Cmd("!осебе","$s",39,name));
	cmd.addAuth("SetInfo","Установка личной инфы");
	out="Ok";
	return;
}

// Проверим полномочия
if(!cmd.isChat(proc,uin) && !cmd.psp.testAdmin(uin)) return;
if(!cmd.auth(proc,uin, "SetInfo")) return;

try {
	Vector v = cmd.getParser().parseArgs(msg);
	String sn = (String)v.get(0);
	int len = sn.length();
	if (!(len>1000)){
	java.sql.Time T = new java.sql.Time(new java.util.Date().getTime());
	java.sql.Date D = new java.sql.Date(new java.util.Date().getTime());
		sn = sn + "\n" + "Обновлено:" + D +" "+ T;
		Users us = cmd.srv.us.getUser(uin);
		File Persona = new File ("./UI/"+us.id+".txt");
		if (Persona.exists()) Persona.delete();
		OutputStreamWriter ow = new OutputStreamWriter(new FileOutputStream("./UI/"+us.id+".txt",true),"windows-1251");
		ow.write(sn);
		ow.close();
		Log.talk("Инфа обновлена: "+us.id+": " + sn);
		proc.mq.add(uin,"Информация успешно обновлена: \n"+sn);
	} else proc.mq.add(uin,"Сликом длинная инфа (>1000). Инфа не изменена");
} catch (Exception ex) {
	ex.printStackTrace();
	Log.talk("Error save msg: " + ex.getMessage());
	proc.mq.add(uin,"Ошибка изменения инфы "+ ex.getMessage());
}

/**
 * Скрипт для просмотра инфы
 * !инфо 
 * !i 
 * !info 
 * !и 
 * Imda
 */

/**
 * При вызове скрипта определены следующие переменные:
 * ChatCommandProc cmd - ссылка на обработчик команд
 * IcqProtocol proc - ссылка на процесс обработки icq
 * String msg - текст сообщения с командой
 * String uin - кто отправил сообщение
 * String name - имя этого файла (при процедуре инсталяции скрипта)
 */

import ru.jimbot.modules.AbstractServer;
import ru.jimbot.util.*;
import ru.jimbot.modules.chat.*;
import ru.jimbot.modules.*;

//Установка скрипта как обработчика команды
if(in.equals("install")){
	cmd.addCommand("!и", new Cmd("!и","$n",39,name));
	cmd.addCommand("!i", new Cmd("!i","$n",39,name));
	cmd.addAuth("InfoView","Просмотр инфы");
	cmd.addAuth("InfoViewMod","Просмотр инфы о модерах");
	cmd.addAuth("IsModer","Инфа модера");
	out="Ok";
	return;
}

// Проверим полномочия
if(!cmd.isChat(proc,uin) && !cmd.psp.testAdmin(uin)) return;
if(!cmd.auth(proc,uin, "InfoView")) return;

try{
	Vector v = cmd.getParser().parseArgs(msg);
	int id = (Integer)v.get(0);
	Users u = cmd.srv.us.getUser(id);
	String s = cmd.psp.loadText("./UI/"+id+".txt");
	File Persona = new File ("./UI/"+id+".txt");
	if(u.id==0){
		proc.mq.add(uin,"Пользователь не найден");
		return;
	}
	else if (cmd.auth(proc,u.sn, "IsModer")){
		if (cmd.auth(proc,uin, "InfoViewMod")){
			if (Persona.exists()) proc.mq.add(uin,"Инфа о "+u.localnick+":\n"+s);
			else proc.mq.add(uin,u.localnick+" не задал личную информацию");
		}
		else proc.mq.add(uin,"Инфа о "+u.localnick+" Вам недоступна");
	}
	else if (!cmd.auth(proc,u.sn, "IsModer")){
		if (Persona.exists()) proc.mq.add(uin,"Инфа о "+u.localnick+":\n"+s);
		else proc.mq.add(uin,u.localnick+" не задал личную информацию");
	}
	
} catch (Exception ex) {
    ex.printStackTrace();
    proc.mq.add(uin,"Ошибка "+ex.getMessage());
} 


#13 Imda

    Новичок

  • Пользователи
  • Pip
  • 32 сообщений
  • ГородОттуда

Отправлено 28 Март 2009 - 03:33

Название: Вывод содержимого файла во все комнаты
Смысл: Дописал скрипт сушки для вывода содержимого файла во все комнаты.
Работает так:
!! <имя файла>
файл должен лежать в папке text в корне бота и иметь расширение .txt
Удобно для вывода правил чата, напоминаний читать хелпы и мануалы.
Установка:
1)Создать нужный файл в папке ./text/
2)Создать файл скрипта с расширением .bsh в папке ./services/ChatBot/scripts/command
/**
 * Скрипт предназначен для отправки сообщения из файла во все комнаты
 *
 * Для работы скрипта его нужно скопировать в папку servicesChatBotscriptscommand
 *
 * Пример использование команды: "!! файлБезРаширения"
 * (c) Sushka 2	
 * Редакция Imda
 */
 
import ru.jimbot.modules.AbstractServer;
import ru.jimbot.util.*;
import ru.jimbot.modules.chat.*;
import ru.jimbot.modules.*;
 
//для работы в тест9 этот участок кода удалите и пропишите в скрипте start.bsh пропишите команду и полномочие
if(in.equals("install")){
//!send - название команды, при желании можно изменить на свое
	cmd.addCommand("!!", new Cmd("!!","$s",39,name));
	cmd.addAuth("allroom_filemessage","Содержимое файла во все комнаты '!! file'");
	out="Ok";
	return;
}
 
 
if(!cmd.isChat(proc,uin) && !cmd.psp.testAdmin(uin)) return;
if(!cmd.auth(proc,uin, "allroom_filemessage")) return;
 
try{
	Vector v = cmd.getParser().parseArgs(msg);
	String ff = (String)v.get(0);
	File mes = new File ("./text/"+ff+".txt");
	if(ff.equals("")||ff.equals(" "))return;
	if (mes.exists()){		
	Enumeration e = cmd.srv.cq.uq.keys();
	Set rid = new HashSet();
	while(e.hasMoreElements()){
			String i = e.nextElement();
			Users us = cmd.srv.us.getUser(i);
			if(us.state==UserWork.STATE_CHAT) rid.add(us.room);
		}
 	String s = cmd.psp.loadText("./text/"+ff+".txt");
	String[] ss = s.split("
");
	for (int i:rid){
		for(int ii=0;ii<ss.length;ii++){
			cmd.srv.cq.addMsg(ss[ii],"0",i);
		}
	}
	proc.mq.add(uin,"Содержимое файла "+ff+".txt отправлено");
	}
	else proc.mq.add(uin,"Такого файла не существует");
} catch (Exception ex) {
	ex.printStackTrace();
	proc.mq.add(uin,"Ошибка "+ex.getMessage());
}


#14 Imda

    Новичок

  • Пользователи
  • Pip
  • 32 сообщений
  • ГородОттуда

Отправлено 28 Март 2009 - 03:41

Название: Мини-скрипт, для установки других скриптов "на лету", безе перезагрузки.
Смысл: Для тех кто еще сам не дотренькал)
!скр
Установка и использование:
Создать файл скрипта в папке ./services/ChatBot/scripts/command,
вместо выделенного вставить содержимое секции if(in.equals("install")){ } из скрипта, который вы хотите установить, заменив при этом "name" на имя файла нужного вам скрипта в кавычках БЕЗ расширения .bsh
/**
 * Скрипт установки других скриптов "на лету", без перезагрузки
 */

/**
 * При вызове скрипта определены следующие переменные:
 * ChatCommandProc cmd - ссылка на обработчик команд
 * IcqProtocol proc - ссылка на процесс обработки icq
 * String msg - текст сообщения с командой
 * String uin - кто отправил сообщение
 * String name - имя этого файла (при процедуре инсталяции скрипта)
 */

import ru.jimbot.modules.AbstractServer;
import ru.jimbot.util.*;
import ru.jimbot.modules.chat.*;
import ru.jimbot.modules.*;

//Установка скрипта как обработчика команды
if(in.equals("install")){
	cmd.addCommand("!скр", new Cmd("!скр","$n",39,name));
	cmd.addAuth("InstNewScr","Установить скрипты");
	out="Ok";
	return;
}

// Проверим полномочия
if(!cmd.isChat(proc,uin) && !cmd.psp.testAdmin(uin)) return;
if(!cmd.auth(proc,uin, "InstNewScr")) return;

try{
	cmd.addCommand("!!", new Cmd("!!","$s",39,"Msg_FILE_All_Rooms"));
	cmd.addAuth("allroom_filemessage","Содержимое файла во все комнаты '!! file'");
	out="Ok";

	proc.mq.add(uin,"Готово");
} catch (Exception ex) {
    ex.printStackTrace();
    proc.mq.add(uin,"Ошибка "+ex.getMessage());
}


#15 bess

    Пользователь

  • Специалисты
  • PipPip
  • 94 сообщений
  • ГородСамарска обл. Нефтегорский р-н.

Отправлено 29 Март 2009 - 15:42

/**
 * Скрипт перезапуска основной части бота
 * (с)Bess 
 * положить в папку command
 * команда !restart
 */
 
/**
 * При вызове скрипта определены следующие переменные:
 * ChatCommandProc cmd - ссылка на обработчик команд
 * IcqProtocol proc - ссылка на процесс обработки icq
 * String msg - текст сообщения с командой
 * String uin - кто отправил сообщение
 * String name - имя этого файла (при процедуре инсталяции скрипта)
 */
 
import ru.jimbot.modules.AbstractServer;
import ru.jimbot.util.*;
import ru.jimbot.modules.chat.*;
import ru.jimbot.modules.*;
import ru.jimbot.Manager;
 
//Установка скрипта как обработчика команды
if(in.equals("install")){
	cmd.addCommand("!restart", new Cmd("!restart","",39,name));
	cmd.addAuth("alluser","Список в чате");
	out="Ok";
	return;
}
 
// Проверим полномочия
if(!cmd.isChat(proc,uin) && !cmd.psp.testAdmin(uin)) return;
if(!cmd.auth(proc,uin, "restart")) return;
 
try{	
              String i = "Пожалуйста подождите...";
              proc.mq.add(uin,i);
              Manager.restart();
	        } catch (Exception ex) {
    ex.printStackTrace();
    proc.mq.add(uin,"Ошибка "+ex.getMessage());
}


#16 Imda

    Новичок

  • Пользователи
  • Pip
  • 32 сообщений
  • ГородОттуда

Отправлено 30 Март 2009 - 14:23

/**
 * Скрипт перезапуска основной части бота
 * (с)Bess 
 * положить в папку command
 * команда !restart
 */
 
/**
 * При вызове скрипта определены следующие переменные:
 * ChatCommandProc cmd - ссылка на обработчик команд
 * IcqProtocol proc - ссылка на процесс обработки icq
 * String msg - текст сообщения с командой
 * String uin - кто отправил сообщение
 * String name - имя этого файла (при процедуре инсталяции скрипта)
 */
 
import ru.jimbot.modules.AbstractServer;
import ru.jimbot.util.*;
import ru.jimbot.modules.chat.*;
import ru.jimbot.modules.*;
import ru.jimbot.Manager;
 
//Установка скрипта как обработчика команды
if(in.equals("install")){
	cmd.addCommand("!restart", new Cmd("!restart","",39,name));
[color=#BF0000]	cmd.addAuth("restart","Перезапуск");[/color]
	out="Ok";
	return;
}
 
// Проверим полномочия
if(!cmd.isChat(proc,uin) && !cmd.psp.testAdmin(uin)) return;
if(!cmd.auth(proc,uin, "restart")) return;
 
try{	
              String i = "Пожалуйста подождите...";
              proc.mq.add(uin,i);
              Manager.restart();
	        } catch (Exception ex) {
    ex.printStackTrace();
    proc.mq.add(uin,"Ошибка "+ex.getMessage());
}


#17 Imda

    Новичок

  • Пользователи
  • Pip
  • 32 сообщений
  • ГородОттуда

Отправлено 30 Март 2009 - 18:31

Название: Работа со списком юзеров 1.0 (Версия на правах)
Смысл:
НЕ РАБОТАЕТ ДЛЯ TestAdmin, т.е. Админам, чьи уины написаны в настройках бота никак не спрятаться
Список юзеров:
!кто
Спрятаться из списка:
!вкусты
Установка:
1)Создать *.bsh файлы скриптов в папке ./services/ChatBot/scripts/command
/**
 * Список юзеров в чате, сделано из сорцов ядра
 * Imda
 */
 
import ru.jimbot.modules.AbstractServer;
import ru.jimbot.util.*;
import ru.jimbot.modules.chat.*;
import ru.jimbot.modules.*;
 
if(in.equals("install")){
    cmd.addCommand("!who", new Cmd("!who","",39,name));
    cmd.addCommand("!кто", new Cmd("!кто","",39,name));
    cmd.addCommand("?", new Cmd("?","",39,name));
    cmd.addCommand("+аа", new Cmd("+аа","",39,name));
    cmd.addCommand("+aa", new Cmd("+aa","",39,name));
    cmd.addAuth("WhoList","Получить список юзеров в списке");
    out="Ok";
    return;
}
 
 
if(!cmd.isChat(proc,uin) && !cmd.psp.testAdmin(uin)) return;
if(!cmd.auth(proc,uin, "WhoList")) return;
 
try{
String lst = "";
Enumeration e = cmd.srv.cq.uq.keys();
while(e.hasMoreElements()){
	String i = e.nextElement();
	Users us = cmd.srv.us.getUser(i);
	if (cmd.srv.us.authorityCheck(i, "Show"))
	{
		lst = lst + us.id+" - "+us.localnick+" ["+us.room+"]"+cmd.srv.us.getRoom(us.room).getName()+"; \n";
	}

} 
 proc.mq.add(uin,"Пользователи: \n "+lst);
} catch (Exception ex) {
ex.printStackTrace();
proc.mq.add(uin,"Ошибка "+ex.getMessage());
}

/**
 * Спрятаться из списка юзерей
 * Imda
 */
 
import ru.jimbot.modules.AbstractServer;
import ru.jimbot.util.*;
import ru.jimbot.modules.chat.*;
import ru.jimbot.modules.*;
 
if(in.equals("install")){
    cmd.addCommand("!вкусты", new Cmd("!вкусты","",39,name));
    cmd.addAuth("Show","Видимость в списке");
    cmd.addAuth("CanHide","Может прятаться");
    out="Ok";
    return;
}
 
if(!cmd.isChat(proc,uin) && !cmd.psp.testAdmin(uin)) return;
if(!cmd.auth(proc,uin, "CanHide")) return;
try{
	Users us = cmd.srv.us.getUser(uin);
	if(cmd.qauth(proc,uin, "Show")){
		cmd.srv.us.revokeUser(us.id, "Show");
		proc.mq.add(uin, "Ой, куда ж спрятал(а)ся наш(а) "+us.localnick+"???");
	}
	else{
		cmd.srv.us.grantUser(us.id, "Show");
		proc.mq.add(uin, "О, "+us.localnick+"!!!");
	}
} catch (Exception ex) {
    ex.printStackTrace();
    proc.mq.add(uin,"Ошибка "+ex.getMessage());
}


#18 Imda

    Новичок

  • Пользователи
  • Pip
  • 32 сообщений
  • ГородОттуда

Отправлено 30 Март 2009 - 19:02

Название: Работа со списком юзеров 1.1 (Версия на правах+файл)
Смысл:
Переделал для TestAdmin, но больше грузит серв.. Непринципиально, если хорошая машина, лично я буду использовать более старую версию)
Список юзеров:
!кто
Спрятаться из списка:
!вкусты
Спрятать всех ТА из списка:
!
Установка:
1)Создать *.bsh файлы скриптов в папке ./services/ChatBot/scripts/command
/**
 * Список юзеров в чате, сделано из сорцов ядра
 * Imda
 */
 
import ru.jimbot.modules.AbstractServer;
import ru.jimbot.util.*;
import ru.jimbot.modules.chat.*;
import ru.jimbot.modules.*;
 
if(in.equals("install")){
    cmd.addCommand("!who", new Cmd("!who","",39,name));
    cmd.addCommand("!кто", new Cmd("!кто","",39,name));
    cmd.addCommand("?", new Cmd("?","",39,name));
    cmd.addCommand("+аа", new Cmd("+аа","",39,name));
    cmd.addCommand("+aa", new Cmd("+aa","",39,name));
    cmd.addAuth("WhoList","Получить список юзеров в списке");
    cmd.addAuth("Show","Видимость в списке");
    out="Ok";
    return;
}
 
 
if(!cmd.isChat(proc,uin) && !cmd.psp.testAdmin(uin)) return;
if(!cmd.auth(proc,uin, "WhoList")) return;
 
try{
String lst = "";
Enumeration e = cmd.srv.cq.uq.keys();
while(e.hasMoreElements()){
	String i = e.nextElement();
	Users us = cmd.srv.us.getUser(i);
	if (cmd.srv.us.authorityCheck(i, "Show"))
	{
		if (cmd.psp.testAdmin(i)){
			File Hide = new File ("./.hideta");
			if (!Hide.exists())lst = lst + us.id+" - "+us.localnick+" ["+us.room+"]"+cmd.srv.us.getRoom(us.room).getName()+"; \n";
		}
		else {
			lst = lst + us.id+" - "+us.localnick+" ["+us.room+"]"+cmd.srv.us.getRoom(us.room).getName()+"; \n";
		}
	}

} 
 proc.mq.add(uin,"Пользователи: \n "+lst);
} catch (Exception ex) {
ex.printStackTrace();
proc.mq.add(uin,"Ошибка "+ex.getMessage());
}

	
/**
 * Спрятаться из списка юзерей
 * Imda
 */
 
import ru.jimbot.modules.AbstractServer;
import ru.jimbot.util.*;
import ru.jimbot.modules.chat.*;
import ru.jimbot.modules.*;
 
if(in.equals("install")){
    cmd.addCommand("!вкусты", new Cmd("!вкусты","",39,name));
    out="Ok";
    return;
}
 
 
if(!cmd.isChat(proc,uin) && !cmd.psp.testAdmin(uin)) return;
try{
	Users us = cmd.srv.us.getUser(uin);
	if(cmd.qauth(proc,uin, "Show")){
		cmd.srv.us.revokeUser(us.id, "Show");
		proc.mq.add(uin, "Ой, куда ж спрятал(а)ся наш(а) "+us.localnick+"???");
	}
	else{
		cmd.srv.us.grantUser(us.id, "Show");
		proc.mq.add(uin, "О, "+us.localnick+"!!!");
	}
} catch (Exception ex) {
    ex.printStackTrace();
    proc.mq.add(uin,"Ошибка "+ex.getMessage());
}
/**
 * Спрятать ТА из списка юзерей
 * Imda
 */
 
import ru.jimbot.modules.AbstractServer;
import ru.jimbot.util.*;
import ru.jimbot.modules.chat.*;
import ru.jimbot.modules.*;
 
if(in.equals("install")){
    cmd.addCommand("!тавкусты", new Cmd("!тавкусты","",39,name));
    cmd.addAuth("HideTA","Может прятать TA");
    out="Ok";
    return;
}
 
 
if(!cmd.isChat(proc,uin) && !cmd.psp.testAdmin(uin)) return;
if(!cmd.auth(proc,uin, "HideTA")) return;
try{
	File Hide = new File ("./.hideta");
	if (Hide.exists()){
		Hide.delete();
		proc.mq.add(uin,"TA вышли из сумрака");
	}
	else{
		OutputStreamWriter ow = new OutputStreamWriter(new FileOutputStream("./.hideta",true),"windows-1251");
		String s = "Спасибо великому Imda что укрывает нас от глаз недобрых";
		proc.mq.add(uin,"TA никто не видит");
		ow.write(s);
		ow.close();
	}
} catch (Exception ex) {
    ex.printStackTrace();
    proc.mq.add(uin,"Ошибка "+ex.getMessage());
}


#19 Imda

    Новичок

  • Пользователи
  • Pip
  • 32 сообщений
  • ГородОттуда

Отправлено 31 Март 2009 - 03:31

Название: Организация службы жалоб
Смысл: Решил сделать возможным ябедничать на супостатов)
!жалоба
!жалобы
!жалобы
Установка:
1)Создать папку pet в корне бота
2)Создать файлы *.bsh скриптов в папке ./services/ChatBot/scripts/command

/**
 * Скрипт для добавления жалоб
 * !жалоба  
 */

import ru.jimbot.modules.AbstractServer;
import ru.jimbot.util.*;
import ru.jimbot.modules.chat.*;
import ru.jimbot.modules.*;

//Установка скрипта как обработчика команды
if(in.equals("install")){
	cmd.addCommand("!жалоба", new Cmd("!жалоба","$n $s",39,name));
	cmd.addAuth("Galoba","Жалоба на юзера");
	out="Ok";
	return;
}

// Проверим полномочия
if(!cmd.isChat(proc,uin) && !cmd.psp.testAdmin(uin)) return;
if(!cmd.auth(proc,uin, "Galoba")) return;

try{
	Vector v = cmd.getParser().parseArgs(msg);
	int i = (Integer)v.get(0);
	String pt = (String)v.get(1);
	Users u = cmd.srv.us.getUser(i);
	Users us = cmd.srv.us.getUser(uin);
	OutputStreamWriter ow = new OutputStreamWriter(new FileOutputStream("./pet/"+u.id,true),"windows-1251");
	java.sql.Date D = new java.sql.Date(new java.util.Date().getTime());
	ow.write(D+" ["+us.id+"]"+us.localnick+":"+pt+"\n");
	ow.close();
	proc.mq.add(uin,"Жалоба сохранена и будет рассмотрена");
} catch (Exception ex) {
    ex.printStackTrace();
    proc.mq.add(uin,"Ошибка "+ex.getMessage());
} 
/**
 * Просмотр жалоб.
 * !жалобы - количество жалоб, табличко
 * !жалобы  - жалобы на юзера
 * Imda
 */

import ru.jimbot.modules.AbstractServer;
import ru.jimbot.util.*;
import ru.jimbot.modules.chat.*;
import ru.jimbot.modules.*;

//Установка скрипта как обработчика команды
if(in.equals("install")){
	cmd.addCommand("!жалобы", new Cmd("!жалобы","$s",39,name));
	cmd.addAuth("Galobs","Список жалоб");
	out="Ok";
	return;
}
if(!cmd.isChat(proc,uin) && !cmd.psp.testAdmin(uin)) return;
if(!cmd.auth(proc,uin, "Galobs")) return;
try{
	Vector v = cmd.getParser().parseArgs(msg);
	String smsg = (String)v.get(0);
	String l;
	if(smsg.equals("")||smsg.equals(" "))
	{
		File pets = new File ("./pet/");
		String[] fl = pets.list();			//Список файлов fl
		l = "Жалобы:\n";				//Начало отчета l
		l += "U.id - Pet.Amnt:"+"\n";			//Добавили в строку ИД, петиции (Заглавие таблицы)
		for(int i=0;i
					
					

#20 Imda

    Новичок

  • Пользователи
  • Pip
  • 32 сообщений
  • ГородОттуда

Отправлено 31 Март 2009 - 03:38

Больше сам писать не буду... Если кому чего понадобится - пишите в личку)
Голосование если кто может помочь дописать - ибо мне ооооооочень лень - выкладывавыю)

Чтоб не убрали сообщение - работа с ТОДО:
/**
 * Скрипт для добавления в TODO
 * Imda
 */

/**
 * При вызове скрипта определены следующие переменные:
 * ChatCommandProc cmd - ссылка на обработчик команд
 * IcqProtocol proc - ссылка на процесс обработки icq
 * String msg - текст сообщения с командой
 * String uin - кто отправил сообщение
 * String name - имя этого файла (при процедуре инсталяции скрипта)
 */

import ru.jimbot.modules.AbstractServer;
import ru.jimbot.util.*;
import ru.jimbot.modules.chat.*;
import ru.jimbot.modules.*;

//Установка скрипта как обработчика команды
if(in.equals("install")){
	cmd.addCommand("!надо", new Cmd("!надо","$s",39,name));
	cmd.addAuth("mktodo","Добавление в ТОДО");
	out="Ok";
	return;
}

// Проверим полномочия
if(!cmd.isChat(proc,uin) && !cmd.psp.testAdmin(uin)) return;
if(!cmd.auth(proc,uin, "mktodo")) return;

try {
	Vector v = cmd.getParser().parseArgs(msg);
	String sn = (String)v.get(0);
	java.sql.Time T = new java.sql.Time(new java.util.Date().getTime());
	java.sql.Date D = new java.sql.Date(new java.util.Date().getTime());
	OutputStreamWriter ow = new OutputStreamWriter(new FileOutputStream("./todo.txt",true),"windows-1251");
	String s = "[" + D +" "+ T + "] "  + "\n" + sn + "\n\n";
	ow.write(s);
	ow.close();
	Log.talk("TODO: " + sn);
	proc.mq.add(uin,"Добавлено в планы:: \n"+sn);
} catch (Exception ex) {
	ex.printStackTrace();
	Log.talk("Error save msg: " + ex.getMessage());
	proc.mq.add(uin,"Ошибка добавления");
}
/**
 * Скрипт для просмотра TODO
 * Imda
 */


import ru.jimbot.modules.AbstractServer;
import ru.jimbot.util.*;
import ru.jimbot.modules.chat.*;
import ru.jimbot.modules.*;

//Установка скрипта как обработчика команды
if(in.equals("install")){
	cmd.addCommand("!todo", new Cmd("!todo","",39,name));
	cmd.addCommand("!тодо", new Cmd("!тодо","",39,name));
	cmd.addAuth("todo","Список TODO");
	out="Ok";
	return;
}

// Проверим полномочия
if(!cmd.isChat(proc,uin) && !cmd.psp.testAdmin(uin)) return;
if(!cmd.auth(proc,uin, "todo")) return;

try{
	String s = cmd.psp.loadText("./todo.txt");
	String[] ss = s.split("
");
	for(int i=0;i
					
					





Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 скрытых пользователей