|
 |
|
 |
| Пишем плагины сами! |
| Gigabyte | Дата: Понедельник, 02.03.2009, 02:08 | Сообщение # 1 |
Owner
Группа: Администраторы
Сообщений: 331
Репутация: 141
Статус: Offline
| Чем смогу - помогу. А пока советую почитать АПИ бота вот тут, собственно тут можно задать любой вопрос о плагинописании. Так же вам понадобиться инструмент для работы с питоном, взять его можно тут. Чуть не забыл, приаттачил знаменитый HELLO WORLD!
|
| |
|
| |
| Leok | Дата: Понедельник, 02.03.2009, 12:13 | Сообщение # 2 |
|
Помощник владельца
Группа: Проверенные
Сообщений: 21
Репутация: 0
Статус: Offline
| Серег.. не зна даж как понятно объяснить.. вот я решила сама все набрать, и у меня не закрывается после def hello_world(type, source, parametrs): res = random.choice([u'Привет, мир!', u'', u'', u'']) reply(type, source, res) (должно закрыться) а у меня так и идет, как будто входит в эту команду, хотела скрин прилепить, но не поняла как
|
| |
|
| |
| Gigabyte | Дата: Понедельник, 02.03.2009, 22:39 | Сообщение # 3 |
Owner
Группа: Администраторы
Сообщений: 331
Репутация: 141
Статус: Offline
| Так сказать урок номер два, реализация просмотра всех сообщений идущих через бота и срабатывание на слово "привет" давая ответ рандомной фразой. В аттаче исходник
|
| |
|
| |
| Leok | Дата: Вторник, 03.03.2009, 00:57 | Сообщение # 4 |
|
Помощник владельца
Группа: Проверенные
Сообщений: 21
Репутация: 0
Статус: Offline
| Щас щас)) посмотрю)) ты мои мысли опережаешь))) Еще ведь можно его и прощаться научиться)) на команду пока) Добавлено (03.03.2009, 00:44) --------------------------------------------- Блин, не работает((( глянь пож, что не так? Code #===istalismanplugin=== # -*- coding: utf-8 -*-
def hello_world(type, source, parameters): res = random.choice([u'Приветик!', u'Здравствуйте!', u'Доброго дня', u'И вам привет', u'Привет! Рад, что ты здесь!', u'Ооо..Какие люди.. <img src="http://s4.ucoz.net/sm/23/smile.gif" border="0" align="absmiddle" alt="smile"> Привет-привет!']) body = parameters.lower() if (body.count(u'привет') > 0) & (source[2] != get_bot_nick(source[1])): reply(type, source, res)
register_command_handler(hello_world, 'привет', ['все'], 0, 'просто привет', 'привет', ['привет']) Добавлено (03.03.2009, 00:57) --------------------------------------------- нашла ошибку
|
| |
|
| |
| ezenomera | Дата: Вторник, 03.03.2009, 03:23 | Сообщение # 5 |
|
Рядовой
Группа: Пользователи
Сообщений: 3
Репутация: 0
Статус: Offline
| А как сделать, чтобы он отвечал и на различные вариации "привет"?
|
| |
|
| |
| Gigabyte | Дата: Вторник, 03.03.2009, 08:26 | Сообщение # 6 |
Owner
Группа: Администраторы
Сообщений: 331
Репутация: 141
Статус: Offline
| Leok, обрати внимание на последнюю строку, в моем примере мы регисрируем не тот момент когда пользователь сам вызовет команду, а регистрируем абсолютно все сообщения функцией register_message_handler(hello_world3) а не register_command_handler(hello_world, 'привет', ['все'], 0, 'просто привет', 'привет', ['привет'])
|
| |
|
| |
| Gigabyte | Дата: Вторник, 03.03.2009, 08:27 | Сообщение # 7 |
Owner
Группа: Администраторы
Сообщений: 331
Репутация: 141
Статус: Offline
| ezenomera, конкретнее? собственно он будет отвечать на привет, приветы, приветик, приветище и на любые другие слова с "корнем" привет
|
| |
|
| |
| Leok | Дата: Вторник, 03.03.2009, 11:00 | Сообщение # 8 |
|
Помощник владельца
Группа: Проверенные
Сообщений: 21
Репутация: 0
Статус: Offline
| Gigabyte, ага.. исправила))) там и был косяк)) Терь такая мысль- можно ли в if еще добавить чтоб он здоровался, напр, не только на привет, но и на здравствуй? (как вариант) И я хоч сделать, чтоб он прощался, это надо отдельный плаг или в этом можно функцию добавить?
|
| |
|
| |
| virus | Дата: Вторник, 03.03.2009, 11:33 | Сообщение # 9 |
|
Рядовой
Группа: Проверенные
Сообщений: 13
Репутация: 0
Статус: Offline
| Gigabyte, интересные примеры;) продолжай в томже духе!!!
|
| |
|
| |
| Gigabyte | Дата: Вторник, 03.03.2009, 17:01 | Сообщение # 10 |
Owner
Группа: Администраторы
Сообщений: 331
Репутация: 141
Статус: Offline
| Quote (Leok) Терь такая мысль- можно ли в if еще добавить чтоб он здоровался, напр, не только на привет, но и на здравствуй? (как вариант) Окружаем скобками первое условие до логической операции "и" и внутри скобок добавляем условия на каждое слово разделяя условия логическим "или" if ( (body.count(u'привет') > 0) | (body.count(u'здравствуй') > 0) | (body.count(u'здарова') > 0) ) & (source[2] != get_bot_nick(source[1])): Quote (Leok) И я хоч сделать, чтоб он прощался, это надо отдельный плаг или в этом можно функцию добавить? Добавляем кострукцию ниже подобную Code if (body.count(u'привет') > 0) & (source[2] != get_bot_nick(source[1])): reply(type, source, res) только для "пока", можно использовать модификацию этой конструкции описанную выше в посте
|
| |
|
| |
| Leok | Дата: Среда, 04.03.2009, 03:00 | Сообщение # 11 |
|
Помощник владельца
Группа: Проверенные
Сообщений: 21
Репутация: 0
Статус: Offline
| С трудом и твой помощью сделала.. Спасиб.. Как "Пока" сделать в этом же плаге, пока не понима..
|
| |
|
| |
| Gigabyte | Дата: Среда, 04.03.2009, 09:00 | Сообщение # 12 |
Owner
Группа: Администраторы
Сообщений: 331
Репутация: 141
Статус: Offline
| Leok, не понимаю в чем проблемы. В аттаче мод на 3 действия: привет, пока и пиво
|
| |
|
| |
| Gigabyte | Дата: Среда, 04.03.2009, 09:59 | Сообщение # 13 |
Owner
Группа: Администраторы
Сообщений: 331
Репутация: 141
Статус: Offline
| Ещё один урок! Учим бота понимать к нему ли обращаются или нет! Пример в аттаче, а делаем буквадьно следущее: Code botnick = get_bot_nick(source[1]) if parameters.split(' ')[0].count(botnick) > 0: forme = 1 else: forme = 0 Здесь в строке botnick = get_bot_nick(source[1]) присваиваем текущий ник бота ля конференции в переменную botnick if parameters.split(' ')[0].count(botnick) > 0:, тут сначала parameters разбивается на массив слов конструкцией parameters.split(' '), затем берем первый элемент массива (не забываем что нумерация с нуля) конструкцией parameters.split(' ')[0] как правило первый элемент это ник (если обращение по нику идет), в противном случае это не обращение вовсе Затем ищем в первом элементе массива ник бота конструкцией parameters.split(' ')[0].count(botnick) и проверяем условием найдено ли больше нуля или нет if parameters.split(' ')[0].count(botnick) > 0: Ну а дальше дело технии, а вернее дело IF, если условие верно, то есть найден ник в первом элементе массива, то forme получит значение 1, если ложно то 0. Теперь в дальнейших условиях где необходимо чтобы обратились именно к боту просто проверим равна ли forme единице? Пример: Code if ( (body.count(u'как дела') > 0) | (body.count(u'как ты') > 0) ) & (source[2] != botnick ) & (forme == 1): res = random.choice([u'Я отлично! Сам как?', u'Фсегда не позитиве!!!']) reply(type, source, res)
|
| |
|
| |
| Leok | Дата: Четверг, 05.03.2009, 20:09 | Сообщение # 14 |
|
Помощник владельца
Группа: Проверенные
Сообщений: 21
Репутация: 0
Статус: Offline
| Серег.. еле еле сделала... Ошибки в словах делаю((( Щас работает)) Мне нравиться)) Щас с ником буду разбиратьсяДобавлено (05.03.2009, 15:34) --------------------------------------------- Серег.. Пока распознавание ника не прописывала, просто добавила Code if ( (body.count(u'как дела') > 0) | (body.count(u'как настроение') > 0) | (body.count(u'') > 0) ) & (source[2] != get_bot_nick(source[1])): res = random.choice([u'Отлично! Как ты?', u'Позитифф!', u'Я счастлив :-D', u'Измучен тяжелой неволей :(',u'Я огорчен.. меня никто не любит ;(', u'Ну так... Если б вы не обзывались, был бы счастлив', u'Замечательно! Я люблю вас, друзья']) reply(type, source, res) в общий плаг, и он мне отвечает после любого поста.. вот типа- 12:20:46] Нектария: как ты? [12:20:46] Cronchik: Нектария: Измучен тяжелой неволей [12:21:00] Нектария: как дела? [12:21:01] Cronchik: Нектария: Я огорчен.. меня никто не любит [12:21:45] Нектария: крон, как ты поживаешь: [12:21:46] Cronchik: Нектария: Измучен тяжелой неволей [12:21:48] Zhenyak: нек [12:21:49] Cronchik: Zhenyak: Ну так... Если б вы не обзывались, был бы счастлив [12:22:14] Нектария: хм [12:22:15] Cronchik: Нектария: Позитифф! [12:22:19] Нектария: куку [12:22:20] Cronchik: Нектария: Я огорчен.. меня никто не любит [12:22:25] Нектария: мда [12:22:25] Cronchik: Нектария: Позитифф! [12:22:30] Нектария: стоп [12:22:30] Cronchik: Нектария: Ну так... Если б вы не обзывались, был бы счастлив _____________ почему так?Добавлено (05.03.2009, 15:36) --------------------------------------------- интересно, почему он на каждый пост отвечает? Добавлено (05.03.2009, 15:37) --------------------------------------------- и даже сам себе отвечает- Нектария: привет! [12:35:44] Cronchik: Нектария: Приветик! [12:35:45] Cronchik: Нектария: Ну так... Если б вы не обзывались, был бы счастлив Добавлено (05.03.2009, 15:55) --------------------------------------------- Серега.. поняла в чем проблема.. я в одном условии не написала ничего)) (body.count(u'') > 0) гг.. щас функцию распознавания ника буду писать.. (вернее, списывать ) Добавлено (05.03.2009, 20:09) --------------------------------------------- Серега))))) Все, сделала, все работает, Урок усвоен))))
|
| |
|
| |
| Gigabyte | Дата: Пятница, 06.03.2009, 11:56 | Сообщение # 15 |
Owner
Группа: Администраторы
Сообщений: 331
Репутация: 141
Статус: Offline
| %) Как многа информации. Я сёдня бухаю, так что новый урок напишу уже.. ммм... в понедельник наверна :D
|
| |
|
|
| Copyright Gigabyte © 2010 |
 |
| |