Confirmer, скрипт согласия с правилами хаба |
Здравствуйте, гость ( Вход | Регистрация )
Confirmer, скрипт согласия с правилами хаба |
22.12.2009, 20:36
Сообщение
#1
|
|
Участник Группа: Пользователи Сообщений: 32 Регистрация: 14.7.2009 Из: Россия Пользователь №: 3 871 Спасибо сказали: 1 раз |
Друзья, этот скрипт работал на PtokaX 0.3.6.0. Конвертировал его для PtokaX 0.4.1.1. Скрипт функционирует не полностью - пропускает фразы юзера (до конвертации на старой птоке ничего не пропускал пока не согласишься с правилами). Выглядит это так: заходим, пытаемся написать "каля-маля" в чате, выскакивает сообщение о знакомстве с правилами и написании согласия в ответ и ниже всего этого наше "каля-маля", пишем ещё раз, всё повторяется. Пишем "...согласен..." - всё работает как надо: напоминание отключается, мой IP заносится в список.
Подскажите, где конвертор ошибся или лишнего присобачил, мож отрезал чего? Код -- Этот скрипт конвертирован программой PtokaX LUA API Конвертор v0.9. Русская версия 12/22/09 20:05:00
BOT = SetMan.GetString(21) SET = "sIP" -- определение по IP, "sName" -- по нику Mode = 1 -- 1 - в общий, 2 - в приват. 0 - не отсылать IConfirm = "я соглашаюсь с правилами" Confirm = { } data_file = "scripts/Rules/data.txt" dofile(data_file) function UserConnected(user) Core.GetUserAllData(user) if Confirm[user[SET]] == nil then SendTo(user, BOT, SendConfirm) end end OpConnected = UserConnected function ChatArrival(user,data) Core.GetUserAllData(user) local _,_, Message = string.find(data, "%b<>%s+("..IConfirm..")") IConfirmPars(user, Message) if Confirm[user[SET]] == nil then return SendTo(user, BOT, SendConfirm) end end function SendTo(user, BOT, SendConfirm) if Mode == 1 then Core.SendToNick(user.sNick,"<"..BOT.."> ".. SendConfirm) elseif Mode == 2 then Core.SendPmToNick(user.sNick,BOT, SendConfirm) elseif Mode == 0 then end return 1 end function ToArrival(user,data) Core.GetUserAllData(user) local _,_,To,From,Message = string.find(data,"$To:%s+(%S+)%s+From:%s+%S+%s+$<(%S+)>%s+(.*)|") if To == BOT then IConfirmPars(user, Message ) end end function IConfirmPars(user, Message ) if Message == IConfirm then Confirm[user[SET]] = 1 SendTo(user, BOT,"Теперь вы полноправный участник чата!") SaveToFile(data_file, Confirm, "Confirm") end end function ReadFile(file) local f = io.open(file, "r") return f:read("*all") end; rules_txt = ReadFile("scripts/Rules/info.txt") SendConfirm = "Перед тем, как начать общение, ознакомьтесь с информацией хаба и правилами поведения в чате. \n" .. rules_txt .. "\n" .. "Если вы согласны с правилами - напишите фразу: " .. IConfirm .." и отправьте в чат." function SaveToFile(file , table , tablename) local handle = io.open(file,"w+") handle:write(Serialize(table, tablename)) handle:flush() handle:close() collectgarbage(collect) end function Serialize(tTable, sTableName, sTab) sTab = sTab or ""; sTmp = "" sTmp = sTmp..sTab..sTableName.." = {\n" for key, value in pairs(tTable) do local sKey = (type(key) == "string") and string.format("[%q]",key) or string.format("[%d]",key); if(type(value) == "table") then sTmp = sTmp..Serialize(value, sKey, sTab.."\t"); else local sValue = (type(value) == "string") and string.format("%q",value) or tostring(value); sTmp = sTmp..sTab.."\t"..sKey.." = "..sValue end sTmp = sTmp..",\n" end sTmp = sTmp..sTab.."}" return sTmp end RegConnected = UserConnected |
|
|
22.12.2009, 20:57
Сообщение
#2
|
|
Наруто на аваторке Группа: Пользователи Сообщений: 2 606 Регистрация: 11.10.2008 Из: Харькова Пользователь №: 771 Спасибо сказали: 774 раза |
http://mydc.ru/index.html?showtopic=1118&a...ost&p=19064
сам скрипт не выкладываю ибо дядька Николя ругает меня)) |
|
|
22.12.2009, 21:49
Сообщение
#3
|
|
Участник Группа: Пользователи Сообщений: 32 Регистрация: 14.7.2009 Из: Россия Пользователь №: 3 871 Спасибо сказали: 1 раз |
Дружище, я форум уже часов 9 читаю, собираю хаб на PtokaX 0.4.1.1 с такими же скриптами, какие у меня были. И там был (по вашей ссылке) - 3 раза перечитывал, но моя проблема там не решается. Я качал все возможные варианты (например в вашем сообщения идут в личку, а мне надо в общий), пытался сравнить ваш и мой, как это переделать я не знаю. Тема там называется "одноразовая рассылка". У меня не рассылка, у меня согласие с правилами с функцией запрета чата без согласия.
Я наскреб на форуме почти все нужные скрипты, теперь добиваюсь сходства по функциям, т.к. они сильно расходятся со своими предшественниками. |
|
|
22.12.2009, 22:03
Сообщение
#4
|
|
Наруто на аваторке Группа: Пользователи Сообщений: 2 606 Регистрация: 11.10.2008 Из: Харькова Пользователь №: 771 Спасибо сказали: 774 раза |
Confirmer_API2_.zip ( 2.48 килобайт ) Кол-во скачиваний: 68 Я Дал ссыль на тот скрипт что в первом посте, но только уже под API2 !!! |
|
|
22.12.2009, 22:14
Сообщение
#5
|
|
Освоившийся участник Группа: Модераторы Сообщений: 352 Регистрация: 25.7.2009 Пользователь №: 3 960 Спасибо сказали: 73 раза |
ВАСЯ, достаточно было изменить return 1 на return true
Лови: Нажмите СЮДА для открытия просмотра кода скрипта BOT = SetMan.GetString(21) SET = "sIP" -- определение по IP, "sName" -- по нику Mode = 1 -- 1 - в общий, 2 - в приват. 0 - не отсылать IConfirm = "я соглашаюсь с правилами" Confirm = { } data_file = Core.GetPtokaXPath().."scripts/1/data.txt" dofile(data_file) function UserConnected(user) Core.GetUserAllData(user) if Confirm[user[SET]] == nil then SendTo(user, BOT, SendConfirm) end end OpConnected = UserConnected function ChatArrival(user,data) Core.GetUserAllData(user) local _,_, Message = string.find(data, "%b<>%s+("..IConfirm..")") IConfirmPars(user, Message) if Confirm[user[SET]] == nil then return SendTo(user, BOT, SendConfirm) end end function SendTo(user, BOT, SendConfirm) if Mode == 1 then Core.SendToNick(user.sNick,"<"..BOT.."> ".. SendConfirm) elseif Mode == 2 then Core.SendPmToNick(user.sNick,BOT, SendConfirm) elseif Mode == 0 then end return true end function ToArrival(user,data) Core.GetUserAllData(user) local _,_,To,From,Message = string.find(data,"$To:%s+(%S+)%s+From:%s+%S+%s+$<(%S+)>%s+(.*)|") if To == BOT then IConfirmPars(user, Message ) end end function IConfirmPars(user, Message ) if Message == IConfirm then Confirm[user[SET]] = 1 SendTo(user, BOT,"Теперь вы полноправный участник чата!") SaveToFile(data_file, Confirm, "Confirm") end end function ReadFile(file) local f = io.open(file, "r") return f:read("*all") end; rules_txt = ReadFile(Core.GetPtokaXPath().."scripts/1/info.txt") SendConfirm = "Перед тем, как начать общение, ознакомьтесь с информацией хаба и правилами поведения в чате. \n" .. rules_txt .. "\n" .. "Если вы согласны с правилами - напишите фразу: " .. IConfirm .." и отправьте в чат." function SaveToFile(file , table , tablename) local handle = io.open(file,"w+") handle:write(Serialize(table, tablename)) handle:flush() handle:close() collectgarbage(collect) end function Serialize(tTable, sTableName, sTab) sTab = sTab or ""; sTmp = "" sTmp = sTmp..sTab..sTableName.." = {\n" for key, value in pairs(tTable) do local sKey = (type(key) == "string") and string.format("[%q]",key) or string.format("[%d]",key); if(type(value) == "table") then sTmp = sTmp..Serialize(value, sKey, sTab.."\t"); else local sValue = (type(value) == "string") and string.format("%q",value) or tostring(value); sTmp = sTmp..sTab.."\t"..sKey.." = "..sValue end sTmp = sTmp..",\n" end sTmp = sTmp..sTab.."}" return sTmp end RegConnected = UserConnected |
|
|
22.12.2009, 22:17
Сообщение
#6
|
|
7 квадратиков Группа: Модераторы Сообщений: 793 Регистрация: 21.1.2009 Пользователь №: 1 895 Спасибо сказали: 301 раз |
Замени return 1 на return true, а return 0 на просто return.
|
|
|
22.12.2009, 22:20
Сообщение
#7
|
|
Участник Группа: Пользователи Сообщений: 32 Регистрация: 14.7.2009 Из: Россия Пользователь №: 3 871 Спасибо сказали: 1 раз |
Огромное всем спасибо за помощь! Теперь думаю это правило (1 на true, 0 на false) мне поможет в дальнейшей конвертации своего старья.
|
|
|
22.12.2009, 22:35
Сообщение
#8
|
|
Освоившийся участник Группа: Модераторы Сообщений: 352 Регистрация: 25.7.2009 Пользователь №: 3 960 Спасибо сказали: 73 раза |
Пожалуйста, обращайся, если что
|
|
|
16.2.2011, 10:19
Сообщение
#9
|
|
Абсолютный новичок Группа: Пользователи Сообщений: 2 Регистрация: 16.2.2011 Пользователь №: 8 796 Спасибо сказали: 0 раз |
А как сделать чтоб сам бот сообщения не в ЛС кидал а в общем чате выводил ?
|
|
|
16.2.2011, 13:17
Сообщение
#10
|
|
Наруто на аваторке Группа: Пользователи Сообщений: 2 606 Регистрация: 11.10.2008 Из: Харькова Пользователь №: 771 Спасибо сказали: 774 раза |
ddss, заменить
Код Core.SendPmToUser(user,BOT, SendConfirm) на Код Core.SendToUser(user, SendConfirm)
|
|
|
17.2.2011, 1:50
Сообщение
#11
|
|
Абсолютный новичок Группа: Пользователи Сообщений: 2 Регистрация: 16.2.2011 Пользователь №: 8 796 Спасибо сказали: 0 раз |
ddss, заменить Код Core.SendPmToUser(user,BOT, SendConfirm) на Код Core.SendToUser(user, SendConfirm) Там три таких значения Код function UserConnected(user) if Confirm[user[SET]] == nil then Core.SendPmToUser(user,BOT, SendConfirm) end end два таких и одно такое: Код if To == BOT then
if Message == IConfirm then Confirm[user[SET]] = 1 Core.SendPmToUser(user,BOT,"Теперь вы полноправный участник чата!") |
|
|
17.2.2011, 3:36
Сообщение
#12
|
|
Активный участник Группа: Пользователи Сообщений: 93 Регистрация: 25.1.2010 Пользователь №: 5 828 Спасибо сказали: 7 раз |
Воспользовался скриптом Артёма из 4-го сообщения!
Скрипт хороший и главное работает. Но в нём только пути к текстам надо немного поправить и добавить "scripts/" перед двумя "Rules". И главное нужный скрипт, так как теперь пользователи не скажут, что не знакомы с Правилами Хаба! Но! Кроме этого скрипта, неплохо, чтобы сами Правила были всегда востребованы пользователями Хаба, то есть, чтобы они могли всеглда их запросить. Я у себя так и сделал, советую и другим. |
|
|
17.2.2011, 15:25
Сообщение
#13
|
|
Наруто на аваторке Группа: Пользователи Сообщений: 2 606 Регистрация: 11.10.2008 Из: Харькова Пользователь №: 771 Спасибо сказали: 774 раза |
ddss, меняй там где тебе нужно
|
|
|
17.2.2011, 19:38
Сообщение
#14
|
|
Site Reliability Engineer Группа: Модераторы Сообщений: 1 772 Регистрация: 27.6.2009 Из: Чувашия, г. Чебоксары Пользователь №: 3 719 Спасибо сказали: 479 раз |
давно пора изучить http://mydc.ru/topic118.html
|
|
|
24.6.2011, 12:28
Сообщение
#15
|
|
Активный участник Группа: Пользователи Сообщений: 52 Регистрация: 30.6.2010 Из: Волгоград Пользователь №: 7 181 Спасибо сказали: 1 раз |
Confirmer_API2_.zip ( 2.48 килобайт ) Кол-во скачиваний: 68 Я Дал ссыль на тот скрипт что в первом посте, но только уже под API2 !!! Ошибка: Синтаксис: cannot open Rules/data.txt: No soch file or directory |
|
|
24.6.2011, 12:47
Сообщение
#16
|
|
Site Reliability Engineer Группа: Модераторы Сообщений: 1 772 Регистрация: 27.6.2009 Из: Чувашия, г. Чебоксары Пользователь №: 3 719 Спасибо сказали: 479 раз |
А перевести ошибку? No soch file or directory - Нет файла или каталога. А почему бы его не создать руками?
|
|
|
24.6.2011, 13:00
Сообщение
#17
|
|
Активный участник Группа: Пользователи Сообщений: 52 Регистрация: 30.6.2010 Из: Волгоград Пользователь №: 7 181 Спасибо сказали: 1 раз |
|
|
|
24.6.2011, 13:03
Сообщение
#18
|
|
Site Reliability Engineer Группа: Модераторы Сообщений: 1 772 Регистрация: 27.6.2009 Из: Чувашия, г. Чебоксары Пользователь №: 3 719 Спасибо сказали: 479 раз |
как тут не понять? Что тут не понять? Rules/data.txt
Даже посмотри код: Код data_file = "scripts/Rules/data.txt"
|
|
|
|
Сейчас: 27.11.2024, 3:23 |