Commands: {only for admin}
+Votehelp {Shows commands}
+CreateVote { Creates a votepoll.txt,
then auto asks: Votenr=" ",
then auto asks: Votename=" Should we raise the min share to 20GB. ",
then auto asks: Voteend= starts at +voteload, ends " hh:mm ".}
+vodeload {loads the (votepoll nr.)}(Can be skipped in programing if it?s unuseful)
+startvote {starts the (votepoll nr.)}
+stopvote {stops the time = stops votepoll nr. and autosaves the poll}
+showvote {showes the vote results}
+svmain {showes the vote results on main chat}
+Votelist {showes all finished nr.+ votename}
Commands: {for all nicks or ip numbers}
+votefor {Opens the votingBot and displays the current question.}
+vote {votes (y = yes), (n = no)
if = y
then = ("Successfully voted for: "..arg)
if = n
then = ("Successfully voted for: "..arg)
else ="No such poll-option ...please vote (y = yes)(n = no)"}
Outcome
+showvote 01
Vote Nr.01 = Q: Should we raise the min share to 20GB.
Results for: Nr. 01
-----------------------
yes = 153
no = 16
-----------------------
Outcome = YES
------------------------------------------------------------------------------------
Hope you undersand this and get the idea. So start makin it!! hehe :o)
The other Pollbots are no good for me I?ve tried it.
Please send me a e-mail at loony@internet.is if you are going to, or die trying
to do it. tanx...(=CyberPimp=)
Hi,
It need a lot of code. I will try to do but will take some time and i having few time.
Best regards, nErBoS
Hi,
Here is it, i made some modifications with your request, see if you like and tell me if is working ok..
--Requested by (=CyberPimp=)
--Made by nErBoS
Bot = "Vote-Bot"
vt = {}
nr = {}
votetext = "votepoll.txt" --Will be created in the script folder
oldpolls = "oldpolls.txt" --Will be created in the script folder
function Main()
frmHub:RegBot(Bot)
end
function NewUserConnected(user, data)
if (vt[user.sName] == nil) then
vt[user.sName] = 0
end
if (nr[user.sName] == nil) then
nr[user.sName] = 0
end
end
function DataArrival(user, data)
if (strsub(data,1,1)=="<") or (strsub(data,1,5+strlen(Bot))=="$To: "..Bot) then
data=strsub(data,1,strlen(data)-1)
s,e,cmd = strfind(data,"%b<>%s+(%S+)")
if (cmd=="+votehelp") then
local msg = ""
if (user.iProfile == 0) then
msg = msg.."Commands to the Vote-Poll:\r\n"
msg = msg.."\r\n"
msg = msg.."+createvote \tCreates a poll (nr = number to give to poll) (q = Poll question)\r\n"
msg = msg.."+stopvote \t\tWill end the vote-poll\r\n"
msg = msg.."+showvote \t\tShow the vote results of the poll\r\n"
msg = msg.."+svmain \t\tShow the vote results in the mainchat\r\n"
msg = msg.."+votelist\t\t\tShow all finished polls\r\n"
msg = msg.."+votefor\t\t\tShow the polls that you can vote\r\n"
msg = msg.."+vote \t\tTo vote on the poll (y = yes) (n = no) (nr = number of the poll)\r\n"
msg = msg.."\r\n"
user:SendPM(Bot, msg)
else
msg = msg.."Commands to the Vote-Poll:\r\n"
msg = msg.."\r\n"
msg = msg.."+votefor\t\t\tShow the polls that you can vote\r\n"
msg = msg.."+vote \t\tTo vote on the poll (y = yes) (n = no) (nr = number of the poll)\r\n"
msg = msg.."\r\n"
user:SendPM(Bot, msg)
end
return 1
elseif (cmd=="+createvote") then
if (user.iProfile == 0) then
local s,e,number,question = strfind(data,"%b<>%s+%S+%s+(%S+)%s+(.*)")
if (tonumber(number) == nil or number == "") then
user:SendPM(Bot, "Syntax error, +createvote , nr must be a number.")
else
number = tonumber(number)
if (question == nil or question == "") then
user:SendPM(Bot, "Syntax error, +createvote , you must write a question to the poll.")
else
if (CreatePoll(user, number, question) == 1) then
user:SendPM(Bot, "The Vote-Poll has been created.")
else
user:SendPM(Bot, "There is a already a Vote-Poll with the number "..number..".")
end
end
end
else
user:SendPM(Bot, "You don?t have permision to this command.")
end
return 1
elseif (cmd=="+stopvote") then
if (user.iProfile == 0) then
local s,e,number = strfind(data,"%b<>%s+%S+%s+(.*)")
if (tonumber(number) == nil or number == "") then
user:SendPM(Bot, "Syntax error, +stopvote , nr must be a number.")
else
number = tonumber(number)
if (OldPoll(user, number) == 1) then
user:SendPM(Bot, "The Vote-Poll has been closed an saved on the Old Polls.")
else
user:SendPM(Bot, "There is no Vote-Poll with the number "..number..".")
end
end
else
user:SendPM(Bot, "You don?t have permision to this command.")
end
return 1
elseif (cmd=="+showvote") then
if (user.iProfile == 0) then
local s,e,number = strfind(data,"%b<>%s+%S+%s+(.*)")
if (tonumber(number) == nil or number == "") then
user:SendPM(Bot, "Syntax error, +showvote , nr must be a number.")
else
number = tonumber(number)
if (CheckPoll(user, number, votetext) == "") then
user:SendPM(Bot, "There is no Vote-Poll with the number "..number..".")
else
user:SendPM(Bot, CheckPoll(user, number, votetext))
end
end
else
user:SendPM(Bot, "You don?t have permision to this command.")
end
return 1
elseif (cmd=="+svmain") then
if (user.iProfile == 0) then
local s,e,number = strfind(data,"%b<>%s+%S+%s+(.*)")
if (tonumber(number) == nil or number == "") then
user:SendPM(Bot, "Syntax error, +svmain , nr must be a number.")
else
number = tonumber(number)
if (CheckPoll(user, number, votetext) == "") then
user:SendPM(Bot, "There is no Vote-Poll with the number "..number..".")
else
SendToAll(Bot, CheckPoll(user, number, votetext))
end
end
else
user:SendPM(Bot, "You don?t have permision to this command.")
end
return 1
elseif (cmd=="+votelist") then
if (user.iProfile == 0) then
if (readfrom(oldpolls) == nil or ReadPoll(user, oldpolls) == "") then
user:SendPM(Bot, "There is no closed Vote-Polls")
else
user:SendPM(Bot, ReadPoll(user, oldpolls))
end
else
user:SendPM(Bot, "You don?t have permision to this command.")
end
return 1
elseif (cmd=="+votefor") then
if (readfrom(oldpolls) == nil or ReadPoll(user, votetext) == "") then
user:SendPM(Bot, "There is no closed Vote-Polls")
else
user:SendPM(Bot, ReadPoll(user, votetext))
end
return 1
elseif (cmd=="+vote") then
local s,e,number,opt = strfind(data,"%b<>%s+%S+%s+(%S+)%s+(%S+)")
if (tonumber(number) == nil or number == "") then
user:SendPM(Bot, "Syntax error, +vote , nr must be a number.")
else
number = tonumber(number)
if (opt == nil or opt == "" or opt ~= "n" and opt ~= "y") then
user:SendPM(Bot, "Syntax error, +vote , must type (y = yes) or (n = no).")
else
if (Vote(user, number, opt) == 1) then
user:SendPM(Bot, "Your Vote has been registered.")
vt[user.sName] = 1
nr[user.sName] = number
elseif(Vote(user, number, opt) == 2) then
user:SendPM(Bot, "You have already made a vote on this Vote-Poll")
else
user:SendPM(Bot, "There isn?t any Vote-Poll with the number "..number..".")
end
end
end
return 1
end
end
end
function Readtextfile(user, file)
local filecontents = ""
local handle = openfile(file, "r")
if (handle ~= nil) then
local line = read(handle)
while line do
filecontents = filecontents..line.."\r\n"
line = read(handle)
end
closefile(handle)
user:SendPM(Bot, filecontents)
end
end
function Writetextfile(file, array)
writeto(file)
for x=1,getn(array) do write(array[x].."\r\n") end
writeto()
end
function CreatePoll(user, number, question)
local tmp = ""
local time = 0
readfrom(votetext)
while 1 do
local line = read()
if (line == nil) then
if (time == 2) then
break
else
tmp = tmp.."Nr: "..number.." Question: "..question.." Yes: 0 No: 0 Active: Yes\r\n"
time = 1
break
end
else
local s,e,num = strfind(line,"Nr:%s+(%S+)%s+")
if (tonumber(num) == number) then
tmp = tmp..line.."\r\n"
time = 2
else
tmp = tmp..line.."\r\n"
end
end
end
readfrom()
writeto(votetext)
write(tmp)
writeto()
return time
end
function OldPoll(user, number)
local tmp = ""
local tmp2 = ""
local time = 0
readfrom(votetext)
while 1 do
local line = read()
if (line == nil) then
break
else
local s,e, num, question, ny, nn = strfind(line,"Nr:%s+(%S+)%s+(.*)Yes:%s+(%S+)%s+No:%s+(%S+)%s+Active:")
if (tonumber(num) == number) then
tmp2 = tmp2.."Nr: "..number.." Question: "..question.."Yes: "..ny.." No: "..nn.." Active: No\r\n"
time = 1
else
tmp = tmp..line.."\r\n"
end
end
end
readfrom()
writeto(votetext)
write(tmp)
writeto()
if (time == 0) then
else
appendto(oldpolls)
write(tmp2)
writeto()
end
return time
end
function CheckPoll(user, number, file)
local tmp = ""
readfrom(file)
while 1 do
local line = read()
if (line == nil) then
break
else
local s,e, num, question, ny, nn = strfind(line,"Nr:%s+(%S+)%s+(.*)Yes:%s+(%S+)%s+No:%s+(%S+)%s+Active:")
if (tonumber(num) == number) then
tmp = tmp.."\r\n-------------------- Vote Poll --------------------\r\n"
tmp = tmp.."Results of Vote-Poll Nr: "..num.."\r\n"
tmp = tmp.."Vote "..question.."\r\n"
tmp = tmp.."------------------------------\r\n"
tmp = tmp.."Yes: "..ny.."\r\n"
tmp = tmp.."No: "..nn.."\r\n"
tmp = tmp.."------------------------------\r\n"
if (tonumber(ny) > tonumber(nn)) then
tmp = tmp.."Yes is Winnig."
elseif (tonumber(ny) < tonumber(nn)) then
tmp = tmp.."No is Winnig."
elseif (tonumber(ny) == tonumber(nn)) then
tmp = tmp.."Yes and No is equal."
end
break
else
end
end
end
readfrom()
return tmp
end
function ReadPoll(user, file)
local tmp = ""
readfrom(file)
while 1 do
local line = read()
if (line == nil) then
break
else
local s,e, num, question, ny, nn = strfind(line,"Nr:%s+(%S+)%s+(.*)Yes:%s+(%S+)%s+No:%s+(%S+)%s+Active:")
tmp = tmp.."\r\n-------------------- Vote Poll --------------------\r\n"
tmp = tmp.."Results of Vote-Poll Nr: "..num.."\r\n"
tmp = tmp.."Vote "..question.."\r\n"
tmp = tmp.."------------------------------\r\n"
tmp = tmp.."Yes: "..ny.."\r\n"
tmp = tmp.."No: "..nn.."\r\n"
tmp = tmp.."------------------------------\r\n"
if (file == oldpolls) then
tmp = tmp.."Closed Vote-Poll\r\n"
elseif (file == votetext) then
tmp = tmp.."Active Vote-Poll\r\n"
end
end
end
readfrom()
return tmp
end
function Vote(user, number, opt)
local tmp = ""
local time = 0
if (vt[user.sName] == 1 and nr[user.sName] == number) then
time = 2
else
readfrom(votetext)
while 1 do
local line = read()
if (line == nil) then
break
else
local s,e, num, question, ny, nn = strfind(line,"Nr:%s+(%S+)%s+(.*)Yes:%s+(%S+)%s+No:%s+(%S+)%s+Active:")
if (tonumber(num) == number) then
if (opt == "y") then
ny = tonumber(ny) + 1
elseif (opt == "n") then
nn = tonumber(nn) + 1
end
tmp = tmp.."Nr: "..number.." Question: "..question.."Yes: "..ny.." No: "..nn.." Active: Yes\r\n"
time = 1
else
tmp = tmp..line.."\r\n"
end
end
end
readfrom()
writeto(votetext)
write(tmp)
writeto()
end
return time
end
Best regards, nErBoS
:D Great, it looks good but some errors. :(
[17:33:02] Your Vote has been registered.
[17:34:26] <[=CyberPimp=]> +stopvote 01
[17:34:26] The Vote-Poll has been closed an saved on the Old Polls.
[17:34:41] <[=CyberPimp=]> +showvote 01
[17:34:41] There is no Vote-Poll with the number 1.
[17:35:26] <[=CyberPimp=]> +votelist
[17:35:27]
-------------------- Vote Poll --------------------
Results of Vote-Poll Nr: 1
Vote Question: Question: Question: ? a? h?kka sharei? ? 30GB
------------------------------
Yes: 1
No: 0
------------------------------
Closed Vote-Poll
[17:36:34] <[=CyberPimp=]> +svmain
[17:36:35] Syntax error, +svmain , nr must be a number.
[17:36:46] <[=CyberPimp=]> +svmain 01
[17:36:47] There is no Vote-Poll with the number 1.
[17:39:28] <[=CyberPimp=]> +svmain 1
[17:39:28] There is no Vote-Poll with the number 1.
17:36:46] <[=CyberPimp=]> +svmain 01
This works if the poll is?t closed, sorry
It needs to show the resoults of the polls when thay are done as well. Can you fix that and the Question: Question: Question bug as well.
Great job !!, finally a good voteing script
Hi,
I had the old polls separated form the open polls try, solved also the question bug..
--Requested by (=CyberPimp=)
--Made by nErBoS
Bot = "Vote-Bot"
vt = {}
nr = {}
votetext = "votepoll.txt" --Will be created in the script folder
oldpolls = "oldpolls.txt" --Will be created in the script folder
function Main()
frmHub:RegBot(Bot)
end
function NewUserConnected(user, data)
if (vt[user.sName] == nil) then
vt[user.sName] = 0
end
if (nr[user.sName] == nil) then
nr[user.sName] = 0
end
end
function DataArrival(user, data)
if (strsub(data,1,1)=="<") or (strsub(data,1,5+strlen(Bot))=="$To: "..Bot) then
data=strsub(data,1,strlen(data)-1)
s,e,cmd = strfind(data,"%b<>%s+(%S+)")
if (cmd=="+votehelp") then
local msg = ""
if (user.iProfile == 0) then
msg = msg.."Commands to the Vote-Poll:\r\n"
msg = msg.."\r\n"
msg = msg.."+createvote \tCreates a poll (nr = number to give to poll) (q = Poll question)\r\n"
msg = msg.."+stopvote \t\tWill end the vote-poll\r\n"
msg = msg.."+showvote \tShow the vote results of the poll (old = old polls) or (new = polls that haven't been closed)\r\n"
msg = msg.."+svmain \tShow the vote results in the mainchat (old = old polls) or (new = polls that haven't been closed)\r\n"
msg = msg.."+votelist\t\t\tShow all finished polls\r\n"
msg = msg.."+votefor\t\t\tShow the polls that you can vote\r\n"
msg = msg.."+vote \t\tTo vote on the poll (y = yes) (n = no) (nr = number of the poll)\r\n"
msg = msg.."\r\n"
user:SendPM(Bot, msg)
else
msg = msg.."Commands to the Vote-Poll:\r\n"
msg = msg.."\r\n"
msg = msg.."+votefor\t\t\tShow the polls that you can vote\r\n"
msg = msg.."+vote \t\tTo vote on the poll (y = yes) (n = no) (nr = number of the poll)\r\n"
msg = msg.."\r\n"
user:SendPM(Bot, msg)
end
return 1
elseif (cmd=="+createvote") then
if (user.iProfile == 0) then
local s,e,number,question = strfind(data,"%b<>%s+%S+%s+(%S+)%s+(.*)")
if (tonumber(number) == nil) then
user:SendPM(Bot, "Syntax error, +createvote , nr must be a number.")
else
number = tonumber(number)
if (question == nil or question == "") then
user:SendPM(Bot, "Syntax error, +createvote , you must write a question to the poll.")
else
if (CreatePoll(user, number, question) == 1) then
user:SendPM(Bot, "The Vote-Poll has been created.")
else
user:SendPM(Bot, "There is a already a Vote-Poll with the number "..number..".")
end
end
end
else
user:SendPM(Bot, "You don?t have permision to this command.")
end
return 1
elseif (cmd=="+stopvote") then
if (user.iProfile == 0) then
local s,e,number = strfind(data,"%b<>%s+%S+%s+(.*)")
if (tonumber(number) == nil or number == "") then
user:SendPM(Bot, "Syntax error, +stopvote , nr must be a number.")
else
number = tonumber(number)
if (OldPoll(user, number) == 1) then
user:SendPM(Bot, "The Vote-Poll has been closed an saved on the Old Polls.")
else
user:SendPM(Bot, "There is no Vote-Poll with the number "..number..".")
end
end
else
user:SendPM(Bot, "You don?t have permision to this command.")
end
return 1
elseif (cmd=="+showvote") then
if (user.iProfile == 0) then
local s,e,number, opt = strfind(data,"%b<>%s+%S+%s+(%S+)%s+(%S+)")
if (tonumber(number) == nil) then
user:SendPM(Bot, "Syntax error, +showvote , nr must be a number.")
else
number = tonumber(number)
if (opt == "old") then
if (CheckPoll(user, number, oldpolls) == "") then
user:SendPM(Bot, "There is no Vote-Poll with the number "..number..".")
else
user:SendPM(Bot, CheckPoll(user, number, oldpolls))
end
elseif(opt == "new") then
if (CheckPoll(user, number, votetext) == "") then
user:SendPM(Bot, "There is no Vote-Poll with the number "..number..".")
else
user:SendPM(Bot, CheckPoll(user, number, votetext))
end
else
user:SendPM(Bot, "Syntax error, +showvote , must be (old = old polls) or (new = polls that haven't been closed)")
end
end
else
user:SendPM(Bot, "You don?t have permision to this command.")
end
return 1
elseif (cmd=="+svmain") then
if (user.iProfile == 0) then
local s,e,number, opt = strfind(data,"%b<>%s+%S+%s+(%S+)%s+(%S+)")
if (tonumber(number) == nil) then
user:SendPM(Bot, "Syntax error, +svmain , nr must be a number.")
else
number = tonumber(number)
if (opt == "old") then
if (CheckPoll(user, number, oldpolls) == "") then
user:SendPM(Bot, "There is no Vote-Poll with the number "..number..".")
else
SendToAll(Bot, CheckPoll(user, number, oldpolls))
end
elseif(opt == "new") then
if (CheckPoll(user, number, votetext) == "") then
user:SendPM(Bot, "There is no Vote-Poll with the number "..number..".")
else
SendToAll(Bot, CheckPoll(user, number, votetext))
end
else
user:SendPM(Bot, "Syntax error, +svmain , must be (old = old polls) or (new = polls that haven't been closed)")
end
end
else
user:SendPM(Bot, "You don?t have permision to this command.")
end
return 1
elseif (cmd=="+votelist") then
if (user.iProfile == 0) then
if (readfrom(oldpolls) == nil or ReadPoll(user, oldpolls) == "") then
user:SendPM(Bot, "There is no closed Vote-Polls")
else
user:SendPM(Bot, ReadPoll(user, oldpolls))
end
else
user:SendPM(Bot, "You don?t have permision to this command.")
end
return 1
elseif (cmd=="+votefor") then
if (readfrom(oldpolls) == nil or ReadPoll(user, votetext) == "") then
user:SendPM(Bot, "There is no closed Vote-Polls")
else
user:SendPM(Bot, ReadPoll(user, votetext))
end
return 1
elseif (cmd=="+vote") then
local s,e,number,opt = strfind(data,"%b<>%s+%S+%s+(%S+)%s+(%S+)")
if (tonumber(number) == nil) then
user:SendPM(Bot, "Syntax error, +vote , nr must be a number.")
else
number = tonumber(number)
if (opt == nil or opt == "" or opt ~= "n" and opt ~= "y") then
user:SendPM(Bot, "Syntax error, +vote , must type (y = yes) or (n = no).")
else
if (Vote(user, number, opt) == 1) then
user:SendPM(Bot, "Your Vote has been registered.")
vt[user.sName] = 1
nr[user.sName] = number
elseif(Vote(user, number, opt) == 2) then
user:SendPM(Bot, "You have already made a vote on this Vote-Poll")
else
user:SendPM(Bot, "There isn?t any Vote-Poll with the number "..number..".")
end
end
end
return 1
end
end
end
function CreatePoll(user, number, question)
local tmp = ""
local time = 0
readfrom(votetext)
while 1 do
local line = read()
if (line == nil) then
if (time == 2) then
break
else
tmp = tmp.."Nr: "..number.." Question: "..question.." Yes: 0 No: 0 Active: Yes\r\n"
time = 1
break
end
else
local s,e,num = strfind(line,"Nr:%s+(%S+)%s+")
if (tonumber(num) == number) then
tmp = tmp..line.."\r\n"
time = 2
else
tmp = tmp..line.."\r\n"
end
end
end
readfrom()
writeto(votetext)
write(tmp)
writeto()
return time
end
function OldPoll(user, number)
local tmp = ""
local tmp2 = ""
local time = 0
readfrom(votetext)
while 1 do
local line = read()
if (line == nil) then
break
else
local s,e, num, question, ny, nn = strfind(line,"Nr:%s+(%S+)%s+(.*)Yes:%s+(%S+)%s+No:%s+(%S+)%s+Active:")
if (tonumber(num) == number) then
tmp2 = tmp2.."Nr: "..number.." "..question.."Yes: "..ny.." No: "..nn.." Active: No\r\n"
time = 1
else
tmp = tmp..line.."\r\n"
end
end
end
readfrom()
writeto(votetext)
write(tmp)
writeto()
if (time == 0) then
else
appendto(oldpolls)
write(tmp2)
writeto()
end
return time
end
function CheckPoll(user, number, file)
local tmp = ""
readfrom(file)
while 1 do
local line = read()
if (line == nil) then
break
else
local s,e, num, question, ny, nn = strfind(line,"Nr:%s+(%S+)%s+(.*)Yes:%s+(%S+)%s+No:%s+(%S+)%s+Active:")
if (tonumber(num) == number) then
tmp = tmp.."\r\n-------------------- Vote Poll --------------------\r\n"
tmp = tmp.."Results of Vote-Poll Nr: "..num.."\r\n"
tmp = tmp.."Vote "..question.."\r\n"
tmp = tmp.."------------------------------\r\n"
tmp = tmp.."Yes: "..ny.."\r\n"
tmp = tmp.."No: "..nn.."\r\n"
tmp = tmp.."------------------------------\r\n"
if (tonumber(ny) > tonumber(nn)) then
tmp = tmp.."Yes is Winnig."
elseif (tonumber(ny) < tonumber(nn)) then
tmp = tmp.."No is Winnig."
elseif (tonumber(ny) == tonumber(nn)) then
tmp = tmp.."Yes and No is equal."
end
break
else
end
end
end
readfrom()
return tmp
end
function ReadPoll(user, file)
local tmp = ""
readfrom(file)
while 1 do
local line = read()
if (line == nil) then
break
else
local s,e, num, question, ny, nn = strfind(line,"Nr:%s+(%S+)%s+(.*)Yes:%s+(%S+)%s+No:%s+(%S+)%s+Active:")
tmp = tmp.."\r\n-------------------- Vote Poll --------------------\r\n"
tmp = tmp.."Results of Vote-Poll Nr: "..num.."\r\n"
tmp = tmp.."Vote "..question.."\r\n"
tmp = tmp.."------------------------------\r\n"
tmp = tmp.."Yes: "..ny.."\r\n"
tmp = tmp.."No: "..nn.."\r\n"
tmp = tmp.."------------------------------\r\n"
if (file == oldpolls) then
tmp = tmp.."Closed Vote-Poll\r\n"
elseif (file == votetext) then
tmp = tmp.."Active Vote-Poll\r\n"
end
end
end
readfrom()
return tmp
end
function Vote(user, number, opt)
local tmp = ""
local time = 0
if (vt[user.sName] == 1 and nr[user.sName] == number) then
time = 2
else
readfrom(votetext)
while 1 do
local line = read()
if (line == nil) then
break
else
local s,e, num, question, ny, nn = strfind(line,"Nr:%s+(%S+)%s+(.*)Yes:%s+(%S+)%s+No:%s+(%S+)%s+Active:")
if (tonumber(num) == number) then
if (opt == "y") then
ny = tonumber(ny) + 1
elseif (opt == "n") then
nn = tonumber(nn) + 1
end
tmp = tmp.."Nr: "..number.." "..question.."Yes: "..ny.." No: "..nn.." Active: Yes\r\n"
time = 1
else
tmp = tmp..line.."\r\n"
end
end
end
readfrom()
writeto(votetext)
write(tmp)
writeto()
end
return time
end
Best regards, nErBoS
Now nothing works hehe
no sorry, my mistake hehe
Is it working ok???
It works like charm. Great work and tanx for this script.
can?t be voted 2 times = works great like the rest.
I will post if there are any more problems, but it seems to be working like it should be.
Once again, Great work !!
I love it, hope you like it to.
+votefor does not work
+votefor = Show the polls that you can vote
[19:26:15] <[=CyberPimp=]> +votefor
[19:26:15] There is no closed Vote-Polls
or it works only when poll is closed.
Hi,
Yep a little bug try this...
--Requested by (=CyberPimp=)
--Made by nErBoS
Bot = "Vote-Bot"
vt = {}
nr = {}
votetext = "votepoll.txt" --Will be created in the script folder
oldpolls = "oldpolls.txt" --Will be created in the script folder
function Main()
frmHub:RegBot(Bot)
end
function NewUserConnected(user, data)
if (vt[user.sName] == nil) then
vt[user.sName] = 0
end
if (nr[user.sName] == nil) then
nr[user.sName] = 0
end
end
function DataArrival(user, data)
if (strsub(data,1,1)=="<") or (strsub(data,1,5+strlen(Bot))=="$To: "..Bot) then
data=strsub(data,1,strlen(data)-1)
s,e,cmd = strfind(data,"%b<>%s+(%S+)")
if (cmd=="+votehelp") then
local msg = ""
if (user.iProfile == 0) then
msg = msg.."Commands to the Vote-Poll:\r\n"
msg = msg.."\r\n"
msg = msg.."+createvote \tCreates a poll (nr = number to give to poll) (q = Poll question)\r\n"
msg = msg.."+stopvote \t\tWill end the vote-poll\r\n"
msg = msg.."+showvote \tShow the vote results of the poll (old = old polls) or (new = polls that haven't been closed)\r\n"
msg = msg.."+svmain \tShow the vote results in the mainchat (old = old polls) or (new = polls that haven't been closed)\r\n"
msg = msg.."+votelist\t\t\tShow all finished polls\r\n"
msg = msg.."+votefor\t\t\tShow the polls that you can vote\r\n"
msg = msg.."+vote \t\tTo vote on the poll (y = yes) (n = no) (nr = number of the poll)\r\n"
msg = msg.."\r\n"
user:SendPM(Bot, msg)
else
msg = msg.."Commands to the Vote-Poll:\r\n"
msg = msg.."\r\n"
msg = msg.."+votefor\t\t\tShow the polls that you can vote\r\n"
msg = msg.."+vote \t\tTo vote on the poll (y = yes) (n = no) (nr = number of the poll)\r\n"
msg = msg.."\r\n"
user:SendPM(Bot, msg)
end
return 1
elseif (cmd=="+createvote") then
if (user.iProfile == 0) then
local s,e,number,question = strfind(data,"%b<>%s+%S+%s+(%S+)%s+(.*)")
if (tonumber(number) == nil) then
user:SendPM(Bot, "Syntax error, +createvote , nr must be a number.")
else
number = tonumber(number)
if (question == nil or question == "") then
user:SendPM(Bot, "Syntax error, +createvote , you must write a question to the poll.")
else
if (CreatePoll(user, number, question) == 1) then
user:SendPM(Bot, "The Vote-Poll has been created.")
else
user:SendPM(Bot, "There is a already a Vote-Poll with the number "..number..".")
end
end
end
else
user:SendPM(Bot, "You don?t have permision to this command.")
end
return 1
elseif (cmd=="+stopvote") then
if (user.iProfile == 0) then
local s,e,number = strfind(data,"%b<>%s+%S+%s+(.*)")
if (tonumber(number) == nil or number == "") then
user:SendPM(Bot, "Syntax error, +stopvote , nr must be a number.")
else
number = tonumber(number)
if (OldPoll(user, number) == 1) then
user:SendPM(Bot, "The Vote-Poll has been closed an saved on the Old Polls.")
else
user:SendPM(Bot, "There is no Vote-Poll with the number "..number..".")
end
end
else
user:SendPM(Bot, "You don?t have permision to this command.")
end
return 1
elseif (cmd=="+showvote") then
if (user.iProfile == 0) then
local s,e,number, opt = strfind(data,"%b<>%s+%S+%s+(%S+)%s+(%S+)")
if (tonumber(number) == nil) then
user:SendPM(Bot, "Syntax error, +showvote , nr must be a number.")
else
number = tonumber(number)
if (opt == "old") then
if (CheckPoll(user, number, oldpolls) == "") then
user:SendPM(Bot, "There is no Vote-Poll with the number "..number..".")
else
user:SendPM(Bot, CheckPoll(user, number, oldpolls))
end
elseif(opt == "new") then
if (CheckPoll(user, number, votetext) == "") then
user:SendPM(Bot, "There is no Vote-Poll with the number "..number..".")
else
user:SendPM(Bot, CheckPoll(user, number, votetext))
end
else
user:SendPM(Bot, "Syntax error, +showvote , must be (old = old polls) or (new = polls that haven't been closed)")
end
end
else
user:SendPM(Bot, "You don?t have permision to this command.")
end
return 1
elseif (cmd=="+svmain") then
if (user.iProfile == 0) then
local s,e,number, opt = strfind(data,"%b<>%s+%S+%s+(%S+)%s+(%S+)")
if (tonumber(number) == nil) then
user:SendPM(Bot, "Syntax error, +svmain , nr must be a number.")
else
number = tonumber(number)
if (opt == "old") then
if (CheckPoll(user, number, oldpolls) == "") then
user:SendPM(Bot, "There is no Vote-Poll with the number "..number..".")
else
SendToAll(Bot, CheckPoll(user, number, oldpolls))
end
elseif(opt == "new") then
if (CheckPoll(user, number, votetext) == "") then
user:SendPM(Bot, "There is no Vote-Poll with the number "..number..".")
else
SendToAll(Bot, CheckPoll(user, number, votetext))
end
else
user:SendPM(Bot, "Syntax error, +svmain , must be (old = old polls) or (new = polls that haven't been closed)")
end
end
else
user:SendPM(Bot, "You don?t have permision to this command.")
end
return 1
elseif (cmd=="+votelist") then
if (user.iProfile == 0) then
if (readfrom(oldpolls) == nil or ReadPoll(user, oldpolls) == "") then
user:SendPM(Bot, "There is no closed Vote-Polls")
else
user:SendPM(Bot, ReadPoll(user, oldpolls))
end
else
user:SendPM(Bot, "You don?t have permision to this command.")
end
return 1
elseif (cmd=="+votefor") then
if (readfrom(votetext) == nil or ReadPoll(user, votetext) == "") then
user:SendPM(Bot, "There is no Vote-Polls")
else
user:SendPM(Bot, ReadPoll(user, votetext))
end
return 1
elseif (cmd=="+vote") then
local s,e,number,opt = strfind(data,"%b<>%s+%S+%s+(%S+)%s+(%S+)")
if (tonumber(number) == nil) then
user:SendPM(Bot, "Syntax error, +vote , nr must be a number.")
else
number = tonumber(number)
if (opt == nil or opt == "" or opt ~= "n" and opt ~= "y") then
user:SendPM(Bot, "Syntax error, +vote , must type (y = yes) or (n = no).")
else
if (Vote(user, number, opt) == 1) then
user:SendPM(Bot, "Your Vote has been registered.")
vt[user.sName] = 1
nr[user.sName] = number
elseif(Vote(user, number, opt) == 2) then
user:SendPM(Bot, "You have already made a vote on this Vote-Poll")
else
user:SendPM(Bot, "There isn?t any Vote-Poll with the number "..number..".")
end
end
end
return 1
end
end
end
function CreatePoll(user, number, question)
local tmp = ""
local time = 0
readfrom(votetext)
while 1 do
local line = read()
if (line == nil) then
if (time == 2) then
break
else
tmp = tmp.."Nr: "..number.." Question: "..question.." Yes: 0 No: 0 Active: Yes\r\n"
time = 1
break
end
else
local s,e,num = strfind(line,"Nr:%s+(%S+)%s+")
if (tonumber(num) == number) then
tmp = tmp..line.."\r\n"
time = 2
else
tmp = tmp..line.."\r\n"
end
end
end
readfrom()
writeto(votetext)
write(tmp)
writeto()
return time
end
function OldPoll(user, number)
local tmp = ""
local tmp2 = ""
local time = 0
readfrom(votetext)
while 1 do
local line = read()
if (line == nil) then
break
else
local s,e, num, question, ny, nn = strfind(line,"Nr:%s+(%S+)%s+(.*)Yes:%s+(%S+)%s+No:%s+(%S+)%s+Active:")
if (tonumber(num) == number) then
tmp2 = tmp2.."Nr: "..number.." "..question.."Yes: "..ny.." No: "..nn.." Active: No\r\n"
time = 1
else
tmp = tmp..line.."\r\n"
end
end
end
readfrom()
writeto(votetext)
write(tmp)
writeto()
if (time == 0) then
else
appendto(oldpolls)
write(tmp2)
writeto()
end
return time
end
function CheckPoll(user, number, file)
local tmp = ""
readfrom(file)
while 1 do
local line = read()
if (line == nil) then
break
else
local s,e, num, question, ny, nn = strfind(line,"Nr:%s+(%S+)%s+(.*)Yes:%s+(%S+)%s+No:%s+(%S+)%s+Active:")
if (tonumber(num) == number) then
tmp = tmp.."\r\n-------------------- Vote Poll --------------------\r\n"
tmp = tmp.."Results of Vote-Poll Nr: "..num.."\r\n"
tmp = tmp.."Vote "..question.."\r\n"
tmp = tmp.."------------------------------\r\n"
tmp = tmp.."Yes: "..ny.."\r\n"
tmp = tmp.."No: "..nn.."\r\n"
tmp = tmp.."------------------------------\r\n"
if (tonumber(ny) > tonumber(nn)) then
tmp = tmp.."Yes is Winnig."
elseif (tonumber(ny) < tonumber(nn)) then
tmp = tmp.."No is Winnig."
elseif (tonumber(ny) == tonumber(nn)) then
tmp = tmp.."Yes and No is equal."
end
break
else
end
end
end
readfrom()
return tmp
end
function ReadPoll(user, file)
local tmp = ""
readfrom(file)
while 1 do
local line = read()
if (line == nil) then
break
else
local s,e, num, question, ny, nn = strfind(line,"Nr:%s+(%S+)%s+(.*)Yes:%s+(%S+)%s+No:%s+(%S+)%s+Active:")
tmp = tmp.."\r\n-------------------- Vote Poll --------------------\r\n"
tmp = tmp.."Results of Vote-Poll Nr: "..num.."\r\n"
tmp = tmp.."Vote "..question.."\r\n"
tmp = tmp.."------------------------------\r\n"
tmp = tmp.."Yes: "..ny.."\r\n"
tmp = tmp.."No: "..nn.."\r\n"
tmp = tmp.."------------------------------\r\n"
if (file == oldpolls) then
tmp = tmp.."Closed Vote-Poll\r\n"
elseif (file == votetext) then
tmp = tmp.."Active Vote-Poll\r\n"
end
end
end
readfrom()
return tmp
end
function Vote(user, number, opt)
local tmp = ""
local time = 0
if (vt[user.sName] == 1 and nr[user.sName] == number) then
time = 2
else
readfrom(votetext)
while 1 do
local line = read()
if (line == nil) then
break
else
local s,e, num, question, ny, nn = strfind(line,"Nr:%s+(%S+)%s+(.*)Yes:%s+(%S+)%s+No:%s+(%S+)%s+Active:")
if (tonumber(num) == number) then
if (opt == "y") then
ny = tonumber(ny) + 1
elseif (opt == "n") then
nn = tonumber(nn) + 1
end
tmp = tmp.."Nr: "..number.." "..question.."Yes: "..ny.." No: "..nn.." Active: Yes\r\n"
time = 1
else
tmp = tmp..line.."\r\n"
end
end
end
readfrom()
writeto(votetext)
write(tmp)
writeto()
end
return time
end
Best regards, nErBoS
+votelist comes with this error
Syntax Error: attempt to concat local `num' (a nil value)
when I try when the vote is on.
also:
[20:56:27] <[=CyberPimp=]> +createvote 1 Ert ?? perri
[20:56:27] There is a already a Vote-Poll with the number 1.
[20:56:42] <[=CyberPimp=]> +stopvote 1
[20:56:43] There is no Vote-Poll with the number 1.
can?t stop the vote
Hi,
I have been trying the script and i got no error or that conflit !!
Please show me your votepoll.txt and oldpoll.txt.
Best regards, nErBoS
No you?re right. I dumped the old one and made a new script and there were no errors. Maybe I did something wrong....I don?t know, but It works fine now.
It still seems to be problem with +votefor command, try it. If your running a poll and a user wants to know what poll is running useing +votefor, does not work even for ops and me.
PtokaX comes with each time I try +votefor
Syntax Error: attempt to concat local `num' (a nil value)
Votepoll:
Nr: 1 Question: ? a? hafa min share 15GB Yes: 14 No: 3 Active: Yes
Oldpolls:
Nothing
A very nice script. I have inserted it in my hub and so far no probs with it. But if any arrise then i will definately inform you and show the error message. Thanx very much...
Hi,
Please show me your votetext.txt.
Best regards, nErBoS
Hi,
Let's hope this will resolve the problem..
--Requested by (=CyberPimp=)
--Made by nErBoS
Bot = "Vote-Bot"
vt = {}
nr = {}
votetext = "votepoll.txt" --Will be created in the script folder
oldpolls = "oldpolls.txt" --Will be created in the script folder
function Main()
frmHub:RegBot(Bot)
end
function NewUserConnected(user, data)
if (vt[user.sName] == nil) then
vt[user.sName] = 0
end
if (nr[user.sName] == nil) then
nr[user.sName] = 0
end
end
function DataArrival(user, data)
if (strsub(data,1,1)=="<") or (strsub(data,1,5+strlen(Bot))=="$To: "..Bot) then
data=strsub(data,1,strlen(data)-1)
s,e,cmd = strfind(data,"%b<>%s+(%S+)")
if (cmd=="+votehelp") then
local msg = ""
if (user.iProfile == 0) then
msg = msg.."Commands to the Vote-Poll:\r\n"
msg = msg.."\r\n"
msg = msg.."+createvote \tCreates a poll (nr = number to give to poll) (q = Poll question)\r\n"
msg = msg.."+stopvote \t\tWill end the vote-poll\r\n"
msg = msg.."+showvote \tShow the vote results of the poll (old = old polls) or (new = polls that haven't been closed)\r\n"
msg = msg.."+svmain \tShow the vote results in the mainchat (old = old polls) or (new = polls that haven't been closed)\r\n"
msg = msg.."+votelist\t\t\tShow all finished polls\r\n"
msg = msg.."+votefor\t\t\tShow the polls that you can vote\r\n"
msg = msg.."+vote \t\tTo vote on the poll (y = yes) (n = no) (nr = number of the poll)\r\n"
msg = msg.."\r\n"
user:SendPM(Bot, msg)
else
msg = msg.."Commands to the Vote-Poll:\r\n"
msg = msg.."\r\n"
msg = msg.."+votefor\t\t\tShow the polls that you can vote\r\n"
msg = msg.."+vote \t\tTo vote on the poll (y = yes) (n = no) (nr = number of the poll)\r\n"
msg = msg.."\r\n"
user:SendPM(Bot, msg)
end
return 1
elseif (cmd=="+createvote") then
if (user.iProfile == 0) then
local s,e,number,question = strfind(data,"%b<>%s+%S+%s+(%S+)%s+(.*)")
if (tonumber(number) == nil) then
user:SendPM(Bot, "Syntax error, +createvote , nr must be a number.")
else
number = tonumber(number)
if (question == nil or question == "") then
user:SendPM(Bot, "Syntax error, +createvote , you must write a question to the poll.")
else
if (CreatePoll(user, number, question) == 1) then
user:SendPM(Bot, "The Vote-Poll has been created.")
else
user:SendPM(Bot, "There is a already a Vote-Poll with the number "..number..".")
end
end
end
else
user:SendPM(Bot, "You don?t have permision to this command.")
end
return 1
elseif (cmd=="+stopvote") then
if (user.iProfile == 0) then
local s,e,number = strfind(data,"%b<>%s+%S+%s+(.*)")
if (tonumber(number) == nil or number == "") then
user:SendPM(Bot, "Syntax error, +stopvote , nr must be a number.")
else
number = tonumber(number)
if (OldPoll(user, number) == 1) then
user:SendPM(Bot, "The Vote-Poll has been closed an saved on the Old Polls.")
else
user:SendPM(Bot, "There is no Vote-Poll with the number "..number..".")
end
end
else
user:SendPM(Bot, "You don?t have permision to this command.")
end
return 1
elseif (cmd=="+showvote") then
if (user.iProfile == 0) then
local s,e,number, opt = strfind(data,"%b<>%s+%S+%s+(%S+)%s+(%S+)")
if (tonumber(number) == nil) then
user:SendPM(Bot, "Syntax error, +showvote , nr must be a number.")
else
number = tonumber(number)
if (opt == "old") then
if (CheckPoll(user, number, oldpolls) == "") then
user:SendPM(Bot, "There is no Vote-Poll with the number "..number..".")
else
user:SendPM(Bot, CheckPoll(user, number, oldpolls))
end
elseif(opt == "new") then
if (CheckPoll(user, number, votetext) == "") then
user:SendPM(Bot, "There is no Vote-Poll with the number "..number..".")
else
user:SendPM(Bot, CheckPoll(user, number, votetext))
end
else
user:SendPM(Bot, "Syntax error, +showvote , must be (old = old polls) or (new = polls that haven't been closed)")
end
end
else
user:SendPM(Bot, "You don?t have permision to this command.")
end
return 1
elseif (cmd=="+svmain") then
if (user.iProfile == 0) then
local s,e,number, opt = strfind(data,"%b<>%s+%S+%s+(%S+)%s+(%S+)")
if (tonumber(number) == nil) then
user:SendPM(Bot, "Syntax error, +svmain , nr must be a number.")
else
number = tonumber(number)
if (opt == "old") then
if (CheckPoll(user, number, oldpolls) == "") then
user:SendPM(Bot, "There is no Vote-Poll with the number "..number..".")
else
SendToAll(Bot, CheckPoll(user, number, oldpolls))
end
elseif(opt == "new") then
if (CheckPoll(user, number, votetext) == "") then
user:SendPM(Bot, "There is no Vote-Poll with the number "..number..".")
else
SendToAll(Bot, CheckPoll(user, number, votetext))
end
else
user:SendPM(Bot, "Syntax error, +svmain , must be (old = old polls) or (new = polls that haven't been closed)")
end
end
else
user:SendPM(Bot, "You don?t have permision to this command.")
end
return 1
elseif (cmd=="+votelist") then
if (user.iProfile == 0) then
if (readfrom(oldpolls) == nil or ReadPoll(user, oldpolls) == "") then
user:SendPM(Bot, "There is no closed Vote-Polls")
else
user:SendPM(Bot, ReadPoll(user, oldpolls))
end
else
user:SendPM(Bot, "You don?t have permision to this command.")
end
return 1
elseif (cmd=="+votefor") then
if (readfrom(votetext) == nil or ReadPoll(user, votetext) == "") then
user:SendPM(Bot, "There is no Vote-Polls")
else
user:SendPM(Bot, ReadPoll(user, votetext))
end
return 1
elseif (cmd=="+vote") then
local s,e,number,opt = strfind(data,"%b<>%s+%S+%s+(%S+)%s+(%S+)")
if (tonumber(number) == nil) then
user:SendPM(Bot, "Syntax error, +vote , nr must be a number.")
else
number = tonumber(number)
if (opt == nil or opt == "" or opt ~= "n" and opt ~= "y") then
user:SendPM(Bot, "Syntax error, +vote , must type (y = yes) or (n = no).")
else
if (Vote(user, number, opt) == 1) then
user:SendPM(Bot, "Your Vote has been registered.")
vt[user.sName] = 1
nr[user.sName] = number
elseif(Vote(user, number, opt) == 2) then
user:SendPM(Bot, "You have already made a vote on this Vote-Poll")
else
user:SendPM(Bot, "There isn?t any Vote-Poll with the number "..number..".")
end
end
end
return 1
end
end
end
function CreatePoll(user, number, question)
local tmp = ""
local time = 0
readfrom(votetext)
while 1 do
local line = read()
if (line == nil) then
if (time == 2) then
break
else
tmp = tmp.."Nr: "..number.." Question: "..question.." Yes: 0 No: 0 Active: Yes\r\n"
time = 1
break
end
else
local s,e,num = strfind(line,"Nr:%s+(%S+)%s+")
if (tonumber(num) == number) then
tmp = tmp..line.."\r\n"
time = 2
else
tmp = tmp..line.."\r\n"
end
end
end
readfrom()
writeto(votetext)
write(tmp)
writeto()
return time
end
function OldPoll(user, number)
local tmp = ""
local tmp2 = ""
local time = 0
readfrom(votetext)
while 1 do
local line = read()
if (line == nil) then
break
else
local s,e, num, question, ny, nn = strfind(line,"Nr:%s+(%S+)%s+(.*)Yes:%s+(%S+)%s+No:%s+(%S+)%s+Active:")
if (tonumber(num) == number) then
tmp2 = tmp2.."Nr: "..number.." "..question.."Yes: "..ny.." No: "..nn.." Active: No\r\n"
time = 1
else
tmp = tmp..line.."\r\n"
end
end
end
readfrom()
writeto(votetext)
write(tmp)
writeto()
if (time == 0) then
else
appendto(oldpolls)
write(tmp2)
writeto()
end
return time
end
function CheckPoll(user, number, file)
local tmp = ""
readfrom(file)
while 1 do
local line = read()
if (line == nil) then
break
else
local s,e, num, question, ny, nn = strfind(line,"Nr:%s+(%S+)%s+(.*)Yes:%s+(%S+)%s+No:%s+(%S+)%s+Active:")
if (tonumber(num) == number) then
tmp = tmp.."\r\n-------------------- Vote Poll --------------------\r\n"
tmp = tmp.."Results of Vote-Poll Nr: "..num.."\r\n"
tmp = tmp.."Vote "..question.."\r\n"
tmp = tmp.."------------------------------\r\n"
tmp = tmp.."Yes: "..ny.."\r\n"
tmp = tmp.."No: "..nn.."\r\n"
tmp = tmp.."------------------------------\r\n"
if (tonumber(ny) > tonumber(nn)) then
tmp = tmp.."Yes is Winnig."
elseif (tonumber(ny) < tonumber(nn)) then
tmp = tmp.."No is Winnig."
elseif (tonumber(ny) == tonumber(nn)) then
tmp = tmp.."Yes and No is equal."
end
break
else
end
end
end
readfrom()
return tmp
end
function ReadPoll(user, file)
local tmp = ""
readfrom(file)
while 1 do
local line = read()
if (line == nil or line == "") then
break
else
local s,e, num, question, ny, nn = strfind(line,"Nr:%s+(%S+)%s+(.*)Yes:%s+(%S+)%s+No:%s+(%S+)%s+Active:")
if (num == nil) then
tmp = tmp
break
else
tmp = tmp.."\r\n-------------------- Vote Poll --------------------\r\n"
tmp = tmp.."Results of Vote-Poll Nr: "..num.."\r\n"
tmp = tmp.."Vote "..question.."\r\n"
tmp = tmp.."------------------------------\r\n"
tmp = tmp.."Yes: "..ny.."\r\n"
tmp = tmp.."No: "..nn.."\r\n"
tmp = tmp.."------------------------------\r\n"
if (file == oldpolls) then
tmp = tmp.."Closed Vote-Poll\r\n"
elseif (file == votetext) then
tmp = tmp.."Active Vote-Poll\r\n"
end
end
end
end
readfrom()
return tmp
end
function Vote(user, number, opt)
local tmp = ""
local time = 0
if (vt[user.sName] == 1 and nr[user.sName] == number) then
time = 2
else
readfrom(votetext)
while 1 do
local line = read()
if (line == nil) then
break
else
local s,e, num, question, ny, nn = strfind(line,"Nr:%s+(%S+)%s+(.*)Yes:%s+(%S+)%s+No:%s+(%S+)%s+Active:")
if (tonumber(num) == number) then
if (opt == "y") then
ny = tonumber(ny) + 1
elseif (opt == "n") then
nn = tonumber(nn) + 1
end
tmp = tmp.."Nr: "..number.." "..question.."Yes: "..ny.." No: "..nn.." Active: Yes\r\n"
time = 1
else
tmp = tmp..line.."\r\n"
end
end
end
readfrom()
writeto(votetext)
write(tmp)
writeto()
end
return time
end
Your bug is fixed CyberPimp, if you find more just reports :).
Best regards, nErBoS
Well the error is gone and it comes with a massege, but it dosen?t show the vote-poll witch is running. It sould show all the polls (If more then 1) in the votepoll.txt.
If you could do that, than it?s finished hehe.
[11:10:18] <[=CyberPimp=]> +createvote 2 bara test
[11:10:18] The Vote-Poll has been created.
[11:10:25] <[=CyberPimp=]> +votefor
[11:10:26] There is no Vote-Polls
and more....
[11:40:48] <[=CyberPimp=]> +createvote 3 bara test
[11:40:48] The Vote-Poll has been created.
[11:40:58] <[=CyberPimp=]> +votelist
[11:40:58] There is no closed Vote-Polls
[11:41:11] <[=CyberPimp=]> +vote 3 y
[11:41:11] There isn?t any Vote-Poll with the number 3.
[11:41:38] <[=CyberPimp=]> +votefor
[11:41:38] There is no Vote-Polls
[11:41:55] <[=CyberPimp=]> +stopvote 3
[11:41:56] There is no Vote-Poll with the number 3.
+votelist does not work, there is a old votepoll in oldpolls.
There is some tiny error............
Hi,
Have you work on the txts ??
That happens because you have blank lines in the text file ! Try to erase the both txt files and let the script genarete them by theirselve.
Best regards, nErBoS
Go figure..my mistake hehe.
It works now (for me :o) )
even tried heving 2 polls on at the same time, that works great.
Great job, this is a great script.
You could add +delvote from oldpoll, for a guy?s like me hehe.
If not, then I need to look out for gaps/blank lines when I delete polls from oldpoll.txt. Right ?
Thanx again for doing this script. It?s good to know that others use it aswell :D .
Hi,
I added the command that you requested and also some adds to not have problem with blank lines, lets hope it works.
--Requested by (=CyberPimp=)
--Made by nErBoS
Bot = "Vote-Bot"
vt = {}
nr = {}
votetext = "votepoll.txt" --Will be created in the script folder
oldpolls = "oldpolls.txt" --Will be created in the script folder
function Main()
frmHub:RegBot(Bot)
end
function NewUserConnected(user, data)
if (vt[user.sName] == nil) then
vt[user.sName] = 0
end
if (nr[user.sName] == nil) then
nr[user.sName] = 0
end
end
function DataArrival(user, data)
if (strsub(data,1,1)=="<") or (strsub(data,1,5+strlen(Bot))=="$To: "..Bot) then
data=strsub(data,1,strlen(data)-1)
s,e,cmd = strfind(data,"%b<>%s+(%S+)")
if (cmd=="+votehelp") then
local msg = ""
if (user.iProfile == 0) then
msg = msg.."Commands to the Vote-Poll:\r\n"
msg = msg.."\r\n"
msg = msg.."+createvote \tCreates a poll (nr = number to give to poll) (q = Poll question)\r\n"
msg = msg.."+stopvote \t\tWill end the vote-poll\r\n"
msg = msg.."+showvote \tShow the vote results of the poll (old = old polls) or (new = polls that haven't been closed)\r\n"
msg = msg.."+svmain \tShow the vote results in the mainchat (old = old polls) or (new = polls that haven't been closed)\r\n"
msg = msg.."+votelist\t\t\tShow all finished polls\r\n"
msg = msg.."+votefor\t\t\tShow the polls that you can vote\r\n"
msg = msg.."+vote \t\tTo vote on the poll (y = yes) (n = no) (nr = number of the poll)\r\n"
msg = msg.."+delvote \t\tTo delete old polls (nr = number of the poll)\r\n"
msg = msg.."\r\n"
user:SendPM(Bot, msg)
else
msg = msg.."Commands to the Vote-Poll:\r\n"
msg = msg.."\r\n"
msg = msg.."+votefor\t\t\tShow the polls that you can vote\r\n"
msg = msg.."+vote \t\tTo vote on the poll (y = yes) (n = no) (nr = number of the poll)\r\n"
msg = msg.."\r\n"
user:SendPM(Bot, msg)
end
return 1
elseif (cmd=="+createvote") then
if (user.iProfile == 0) then
local s,e,number,question = strfind(data,"%b<>%s+%S+%s+(%S+)%s+(.*)")
if (tonumber(number) == nil) then
user:SendPM(Bot, "Syntax error, +createvote , nr must be a number.")
else
number = tonumber(number)
if (question == nil or question == "") then
user:SendPM(Bot, "Syntax error, +createvote , you must write a question to the poll.")
else
if (CreatePoll(user, number, question) == 1) then
user:SendPM(Bot, "The Vote-Poll has been created.")
else
user:SendPM(Bot, "There is a already a Vote-Poll with the number "..number..".")
end
end
end
else
user:SendPM(Bot, "You don?t have permision to this command.")
end
return 1
elseif (cmd=="+stopvote") then
if (user.iProfile == 0) then
local s,e,number = strfind(data,"%b<>%s+%S+%s+(.*)")
if (tonumber(number) == nil or number == "") then
user:SendPM(Bot, "Syntax error, +stopvote , nr must be a number.")
else
number = tonumber(number)
if (OldPoll(user, number) == 1) then
user:SendPM(Bot, "The Vote-Poll has been closed an saved on the Old Polls.")
else
user:SendPM(Bot, "There is no Vote-Poll with the number "..number..".")
end
end
else
user:SendPM(Bot, "You don?t have permision to this command.")
end
return 1
elseif (cmd=="+showvote") then
if (user.iProfile == 0) then
local s,e,number, opt = strfind(data,"%b<>%s+%S+%s+(%S+)%s+(%S+)")
if (tonumber(number) == nil) then
user:SendPM(Bot, "Syntax error, +showvote , nr must be a number.")
else
number = tonumber(number)
if (opt == "old") then
if (CheckPoll(user, number, oldpolls) == "") then
user:SendPM(Bot, "There is no Vote-Poll with the number "..number..".")
else
user:SendPM(Bot, CheckPoll(user, number, oldpolls))
end
elseif(opt == "new") then
if (CheckPoll(user, number, votetext) == "") then
user:SendPM(Bot, "There is no Vote-Poll with the number "..number..".")
else
user:SendPM(Bot, CheckPoll(user, number, votetext))
end
else
user:SendPM(Bot, "Syntax error, +showvote , must be (old = old polls) or (new = polls that haven't been closed)")
end
end
else
user:SendPM(Bot, "You don?t have permision to this command.")
end
return 1
elseif (cmd=="+svmain") then
if (user.iProfile == 0) then
local s,e,number, opt = strfind(data,"%b<>%s+%S+%s+(%S+)%s+(%S+)")
if (tonumber(number) == nil) then
user:SendPM(Bot, "Syntax error, +svmain , nr must be a number.")
else
number = tonumber(number)
if (opt == "old") then
if (CheckPoll(user, number, oldpolls) == "") then
user:SendPM(Bot, "There is no Vote-Poll with the number "..number..".")
else
SendToAll(Bot, CheckPoll(user, number, oldpolls))
end
elseif(opt == "new") then
if (CheckPoll(user, number, votetext) == "") then
user:SendPM(Bot, "There is no Vote-Poll with the number "..number..".")
else
SendToAll(Bot, CheckPoll(user, number, votetext))
end
else
user:SendPM(Bot, "Syntax error, +svmain , must be (old = old polls) or (new = polls that haven't been closed)")
end
end
else
user:SendPM(Bot, "You don?t have permision to this command.")
end
return 1
elseif (cmd=="+votelist") then
if (user.iProfile == 0) then
if (readfrom(oldpolls) == nil or ReadPoll(user, oldpolls) == "") then
user:SendPM(Bot, "There is no closed Vote-Polls")
else
user:SendPM(Bot, ReadPoll(user, oldpolls))
end
else
user:SendPM(Bot, "You don?t have permision to this command.")
end
return 1
elseif (cmd=="+votefor") then
if (readfrom(votetext) == nil or ReadPoll(user, votetext) == "") then
user:SendPM(Bot, "There is no Vote-Polls")
else
user:SendPM(Bot, ReadPoll(user, votetext))
end
return 1
elseif (cmd=="+vote") then
local s,e,number,opt = strfind(data,"%b<>%s+%S+%s+(%S+)%s+(%S+)")
if (tonumber(number) == nil) then
user:SendPM(Bot, "Syntax error, +vote , nr must be a number.")
else
number = tonumber(number)
if (opt == nil or opt == "" or opt ~= "n" and opt ~= "y") then
user:SendPM(Bot, "Syntax error, +vote , must type (y = yes) or (n = no).")
else
if (Vote(user, number, opt) == 1) then
user:SendPM(Bot, "Your Vote has been registered.")
vt[user.sName] = 1
nr[user.sName] = number
elseif(Vote(user, number, opt) == 2) then
user:SendPM(Bot, "You have already made a vote on this Vote-Poll")
else
user:SendPM(Bot, "There isn?t any Vote-Poll with the number "..number..".")
end
end
end
return 1
elseif (cmd=="+delvote") then
if (user.iProfile == 0) then
local s,e,number = strfind(data,"%b<>%s+%S+%s+(%S+)")
if (tonumber(number) == nil) then
user:SendPM(Bot, "Syntax error, +delvote , nr must be a number.")
else
number = tonumber(number)
if (DelOldPoll(user, number) == 0) then
user:SendPM(Bot, "Ther is no Old Polll wtih the number "..number)
else
user:SendPM(Bot, "The Old Poll has been deleted.")
end
end
else
user:SendPM(Bot, "You don?t have permision to this command.")
end
return 1
end
end
end
function CreatePoll(user, number, question)
local tmp = ""
local time = 0
readfrom(votetext)
while 1 do
local line = read()
if (line == nil) then
if (time == 2) then
break
else
tmp = tmp.."Nr: "..number.." Question: "..question.." Yes: 0 No: 0 Active: Yes\r\n"
time = 1
break
end
else
local s,e,num = strfind(line,"Nr:%s+(%S+)%s+")
if (tonumber(num) ~= nil and tonumber(num) == number) then
tmp = tmp..line.."\r\n"
time = 2
else
tmp = tmp..line.."\r\n"
end
end
end
readfrom()
writeto(votetext)
write(tmp)
writeto()
return time
end
function OldPoll(user, number)
local tmp = ""
local tmp2 = ""
local time = 0
readfrom(votetext)
while 1 do
local line = read()
if (line == nil) then
break
else
local s,e, num, question, ny, nn = strfind(line,"Nr:%s+(%S+)%s+(.*)Yes:%s+(%S+)%s+No:%s+(%S+)%s+Active:")
if (tonumber(num) ~= nil and tonumber(num) == number) then
tmp2 = tmp2.."Nr: "..number.." "..question.."Yes: "..ny.." No: "..nn.." Active: No\r\n"
time = 1
else
tmp = tmp..line.."\r\n"
end
end
end
readfrom()
writeto(votetext)
write(tmp)
writeto()
if (time == 0) then
else
appendto(oldpolls)
write(tmp2)
writeto()
end
return time
end
function CheckPoll(user, number, file)
local tmp = ""
readfrom(file)
while 1 do
local line = read()
if (line == nil) then
break
else
local s,e, num, question, ny, nn = strfind(line,"Nr:%s+(%S+)%s+(.*)Yes:%s+(%S+)%s+No:%s+(%S+)%s+Active:")
if (tonumber(num) ~= nil and tonumber(num) == number) then
tmp = tmp.."\r\n-------------------- Vote Poll --------------------\r\n"
tmp = tmp.."Results of Vote-Poll Nr: "..num.."\r\n"
tmp = tmp.."Vote "..question.."\r\n"
tmp = tmp.."------------------------------\r\n"
tmp = tmp.."Yes: "..ny.."\r\n"
tmp = tmp.."No: "..nn.."\r\n"
tmp = tmp.."------------------------------\r\n"
if (tonumber(ny) > tonumber(nn)) then
tmp = tmp.."Yes is Winnig."
elseif (tonumber(ny) < tonumber(nn)) then
tmp = tmp.."No is Winnig."
elseif (tonumber(ny) == tonumber(nn)) then
tmp = tmp.."Yes and No is equal."
end
break
else
end
end
end
readfrom()
return tmp
end
function ReadPoll(user, file)
local tmp = ""
readfrom(file)
while 1 do
local line = read()
if (line == nil or line == "") then
break
else
local s,e, num, question, ny, nn = strfind(line,"Nr:%s+(%S+)%s+(.*)Yes:%s+(%S+)%s+No:%s+(%S+)%s+Active:")
if (num == nil) then
else
tmp = tmp.."\r\n-------------------- Vote Poll --------------------\r\n"
tmp = tmp.."Results of Vote-Poll Nr: "..num.."\r\n"
tmp = tmp.."Vote "..question.."\r\n"
tmp = tmp.."------------------------------\r\n"
tmp = tmp.."Yes: "..ny.."\r\n"
tmp = tmp.."No: "..nn.."\r\n"
tmp = tmp.."------------------------------\r\n"
if (file == oldpolls) then
tmp = tmp.."Closed Vote-Poll\r\n"
elseif (file == votetext) then
tmp = tmp.."Active Vote-Poll\r\n"
end
end
end
end
readfrom()
return tmp
end
function Vote(user, number, opt)
local tmp = ""
local time = 0
if (vt[user.sName] == 1 and nr[user.sName] == number) then
time = 2
else
readfrom(votetext)
while 1 do
local line = read()
if (line == nil) then
break
else
local s,e, num, question, ny, nn = strfind(line,"Nr:%s+(%S+)%s+(.*)Yes:%s+(%S+)%s+No:%s+(%S+)%s+Active:")
if (tonumber(num) ~= nil and tonumber(num) == number) then
if (opt == "y") then
ny = tonumber(ny) + 1
elseif (opt == "n") then
nn = tonumber(nn) + 1
end
tmp = tmp.."Nr: "..number.." "..question.."Yes: "..ny.." No: "..nn.." Active: Yes\r\n"
time = 1
else
tmp = tmp..line.."\r\n"
end
end
end
readfrom()
writeto(votetext)
write(tmp)
writeto()
end
return time
end
function DelOldPoll(user, number)
local tmp = ""
local time = 0
readfrom(oldpolls)
while 1 do
local line = read()
if (line == nil) then
break
else
local s,e, num, question, ny, nn = strfind(line,"Nr:%s+(%S+)%s+(.*)Yes:%s+(%S+)%s+No:%s+(%S+)%s+Active:")
if (tonumber(num) ~= nil and tonumber(num) == number) then
time = 1
else
tmp = tmp..line.."\r\n"
end
end
end
readfrom()
writeto(oldpolls)
write(tmp)
writeto()
return time
end
Best regards, nErBoS
works great.
(something that doesn?t really matter).....but......
I had a poll in the oldpoll nr. 3, I created another poll nr.3 and stoped. So there are two polls nr.3 and ofcourse when I used +delvote 3, thay both deleted.
Can you make the script check the old poll aswell when creating new poll. It only checks the polls that are running. Like this....
[23:14:12] <[=CyberPimp=]> +createvote 1 test 1
[23:14:12] The Vote-Poll has been created.
[23:14:33] <[=CyberPimp=]> +createvote 1 test 2
[23:14:33] There is a already a Vote-Poll with the number 1.
..........but it does not check the oldpoll.txt
I think you get what I?m babling about hehe.
Then it sould be done. :D
Hi,
Made it with a little sleep but i think it will work...
--Requested by (=CyberPimp=)
--Made by nErBoS
Bot = "Vote-Bot"
vt = {}
nr = {}
votetext = "votepoll.txt" --Will be created in the script folder
oldpolls = "oldpolls.txt" --Will be created in the script folder
function Main()
frmHub:RegBot(Bot)
end
function NewUserConnected(user, data)
if (vt[user.sName] == nil) then
vt[user.sName] = 0
end
if (nr[user.sName] == nil) then
nr[user.sName] = 0
end
end
function DataArrival(user, data)
if (strsub(data,1,1)=="<") or (strsub(data,1,5+strlen(Bot))=="$To: "..Bot) then
data=strsub(data,1,strlen(data)-1)
s,e,cmd = strfind(data,"%b<>%s+(%S+)")
if (cmd=="+votehelp") then
local msg = ""
if (user.iProfile == 0) then
msg = msg.."Commands to the Vote-Poll:\r\n"
msg = msg.."\r\n"
msg = msg.."+createvote \tCreates a poll (nr = number to give to poll) (q = Poll question)\r\n"
msg = msg.."+stopvote \t\tWill end the vote-poll\r\n"
msg = msg.."+showvote \tShow the vote results of the poll (old = old polls) or (new = polls that haven't been closed)\r\n"
msg = msg.."+svmain \tShow the vote results in the mainchat (old = old polls) or (new = polls that haven't been closed)\r\n"
msg = msg.."+votelist\t\t\tShow all finished polls\r\n"
msg = msg.."+votefor\t\t\tShow the polls that you can vote\r\n"
msg = msg.."+vote \t\tTo vote on the poll (y = yes) (n = no) (nr = number of the poll)\r\n"
msg = msg.."+delvote \t\tTo delete old polls (nr = number of the poll)\r\n"
msg = msg.."\r\n"
user:SendPM(Bot, msg)
else
msg = msg.."Commands to the Vote-Poll:\r\n"
msg = msg.."\r\n"
msg = msg.."+votefor\t\t\tShow the polls that you can vote\r\n"
msg = msg.."+vote \t\tTo vote on the poll (y = yes) (n = no) (nr = number of the poll)\r\n"
msg = msg.."\r\n"
user:SendPM(Bot, msg)
end
return 1
elseif (cmd=="+createvote") then
if (user.iProfile == 0) then
local s,e,number,question = strfind(data,"%b<>%s+%S+%s+(%S+)%s+(.*)")
if (tonumber(number) == nil) then
user:SendPM(Bot, "Syntax error, +createvote , nr must be a number.")
else
number = tonumber(number)
if (question == nil or question == "") then
user:SendPM(Bot, "Syntax error, +createvote , you must write a question to the poll.")
else
if (CreatePoll(user, number, question) == 1) then
user:SendPM(Bot, "The Vote-Poll has been created.")
else
user:SendPM(Bot, "There is a already a Vote-Poll with the number "..number..".")
end
end
end
else
user:SendPM(Bot, "You don?t have permision to this command.")
end
return 1
elseif (cmd=="+stopvote") then
if (user.iProfile == 0) then
local s,e,number = strfind(data,"%b<>%s+%S+%s+(.*)")
if (tonumber(number) == nil or number == "") then
user:SendPM(Bot, "Syntax error, +stopvote , nr must be a number.")
else
number = tonumber(number)
if (OldPoll(user, number) == 1) then
user:SendPM(Bot, "The Vote-Poll has been closed an saved on the Old Polls.")
else
user:SendPM(Bot, "There is no Vote-Poll with the number "..number..".")
end
end
else
user:SendPM(Bot, "You don?t have permision to this command.")
end
return 1
elseif (cmd=="+showvote") then
if (user.iProfile == 0) then
local s,e,number, opt = strfind(data,"%b<>%s+%S+%s+(%S+)%s+(%S+)")
if (tonumber(number) == nil) then
user:SendPM(Bot, "Syntax error, +showvote , nr must be a number.")
else
number = tonumber(number)
if (opt == "old") then
if (CheckPoll(user, number, oldpolls) == "") then
user:SendPM(Bot, "There is no Vote-Poll with the number "..number..".")
else
user:SendPM(Bot, CheckPoll(user, number, oldpolls))
end
elseif(opt == "new") then
if (CheckPoll(user, number, votetext) == "") then
user:SendPM(Bot, "There is no Vote-Poll with the number "..number..".")
else
user:SendPM(Bot, CheckPoll(user, number, votetext))
end
else
user:SendPM(Bot, "Syntax error, +showvote , must be (old = old polls) or (new = polls that haven't been closed)")
end
end
else
user:SendPM(Bot, "You don?t have permision to this command.")
end
return 1
elseif (cmd=="+svmain") then
if (user.iProfile == 0) then
local s,e,number, opt = strfind(data,"%b<>%s+%S+%s+(%S+)%s+(%S+)")
if (tonumber(number) == nil) then
user:SendPM(Bot, "Syntax error, +svmain , nr must be a number.")
else
number = tonumber(number)
if (opt == "old") then
if (CheckPoll(user, number, oldpolls) == "") then
user:SendPM(Bot, "There is no Vote-Poll with the number "..number..".")
else
SendToAll(Bot, CheckPoll(user, number, oldpolls))
end
elseif(opt == "new") then
if (CheckPoll(user, number, votetext) == "") then
user:SendPM(Bot, "There is no Vote-Poll with the number "..number..".")
else
SendToAll(Bot, CheckPoll(user, number, votetext))
end
else
user:SendPM(Bot, "Syntax error, +svmain , must be (old = old polls) or (new = polls that haven't been closed)")
end
end
else
user:SendPM(Bot, "You don?t have permision to this command.")
end
return 1
elseif (cmd=="+votelist") then
if (user.iProfile == 0) then
if (readfrom(oldpolls) == nil or ReadPoll(user, oldpolls) == "") then
user:SendPM(Bot, "There is no closed Vote-Polls")
else
user:SendPM(Bot, ReadPoll(user, oldpolls))
end
else
user:SendPM(Bot, "You don?t have permision to this command.")
end
return 1
elseif (cmd=="+votefor") then
if (readfrom(votetext) == nil or ReadPoll(user, votetext) == "") then
user:SendPM(Bot, "There is no Vote-Polls")
else
user:SendPM(Bot, ReadPoll(user, votetext))
end
return 1
elseif (cmd=="+vote") then
local s,e,number,opt = strfind(data,"%b<>%s+%S+%s+(%S+)%s+(%S+)")
if (tonumber(number) == nil) then
user:SendPM(Bot, "Syntax error, +vote , nr must be a number.")
else
number = tonumber(number)
if (opt == nil or opt == "" or opt ~= "n" and opt ~= "y") then
user:SendPM(Bot, "Syntax error, +vote , must type (y = yes) or (n = no).")
else
if (Vote(user, number, opt) == 1) then
user:SendPM(Bot, "Your Vote has been registered.")
vt[user.sName] = 1
nr[user.sName] = number
elseif(Vote(user, number, opt) == 2) then
user:SendPM(Bot, "You have already made a vote on this Vote-Poll")
else
user:SendPM(Bot, "There isn?t any Vote-Poll with the number "..number..".")
end
end
end
return 1
elseif (cmd=="+delvote") then
if (user.iProfile == 0) then
local s,e,number = strfind(data,"%b<>%s+%S+%s+(%S+)")
if (tonumber(number) == nil) then
user:SendPM(Bot, "Syntax error, +delvote , nr must be a number.")
else
number = tonumber(number)
if (DelOldPoll(user, number) == 0) then
user:SendPM(Bot, "Ther is no Old Polll wtih the number "..number)
else
user:SendPM(Bot, "The Old Poll has been deleted.")
end
end
else
user:SendPM(Bot, "You don?t have permision to this command.")
end
return 1
end
end
end
function CreatePoll(user, number, question)
local tmp = ""
local time = 0
readfrom(oldpolls)
while 1 do
local line = read()
if (line == nil) then
break
else
local s,e,num = strfind(line,"Nr:%s+(%S+)%s+")
if (tonumber(num) ~= nil and tonumber(num) == number) then
time = 2
else
end
end
end
readfrom()
readfrom(votetext)
while 1 do
local line = read()
if (line == nil) then
if (time == 2) then
break
else
tmp = tmp.."Nr: "..number.." Question: "..question.." Yes: 0 No: 0 Active: Yes\r\n"
time = 1
break
end
else
local s,e,num = strfind(line,"Nr:%s+(%S+)%s+")
if (tonumber(num) ~= nil and tonumber(num) == number) then
tmp = tmp..line.."\r\n"
time = 2
else
tmp = tmp..line.."\r\n"
end
end
end
readfrom()
writeto(votetext)
write(tmp)
writeto()
return time
end
function OldPoll(user, number)
local tmp = ""
local tmp2 = ""
local time = 0
readfrom(votetext)
while 1 do
local line = read()
if (line == nil) then
break
else
local s,e, num, question, ny, nn = strfind(line,"Nr:%s+(%S+)%s+(.*)Yes:%s+(%S+)%s+No:%s+(%S+)%s+Active:")
if (tonumber(num) ~= nil and tonumber(num) == number) then
tmp2 = tmp2.."Nr: "..number.." "..question.."Yes: "..ny.." No: "..nn.." Active: No\r\n"
time = 1
else
tmp = tmp..line.."\r\n"
end
end
end
readfrom()
writeto(votetext)
write(tmp)
writeto()
if (time == 0) then
else
appendto(oldpolls)
write(tmp2)
writeto()
end
return time
end
function CheckPoll(user, number, file)
local tmp = ""
readfrom(file)
while 1 do
local line = read()
if (line == nil) then
break
else
local s,e, num, question, ny, nn = strfind(line,"Nr:%s+(%S+)%s+(.*)Yes:%s+(%S+)%s+No:%s+(%S+)%s+Active:")
if (tonumber(num) ~= nil and tonumber(num) == number) then
tmp = tmp.."\r\n-------------------- Vote Poll --------------------\r\n"
tmp = tmp.."Results of Vote-Poll Nr: "..num.."\r\n"
tmp = tmp.."Vote "..question.."\r\n"
tmp = tmp.."------------------------------\r\n"
tmp = tmp.."Yes: "..ny.."\r\n"
tmp = tmp.."No: "..nn.."\r\n"
tmp = tmp.."------------------------------\r\n"
if (tonumber(ny) > tonumber(nn)) then
tmp = tmp.."Yes is Winnig."
elseif (tonumber(ny) < tonumber(nn)) then
tmp = tmp.."No is Winnig."
elseif (tonumber(ny) == tonumber(nn)) then
tmp = tmp.."Yes and No is equal."
end
break
else
end
end
end
readfrom()
return tmp
end
function ReadPoll(user, file)
local tmp = ""
readfrom(file)
while 1 do
local line = read()
if (line == nil or line == "") then
break
else
local s,e, num, question, ny, nn = strfind(line,"Nr:%s+(%S+)%s+(.*)Yes:%s+(%S+)%s+No:%s+(%S+)%s+Active:")
if (num == nil) then
else
tmp = tmp.."\r\n-------------------- Vote Poll --------------------\r\n"
tmp = tmp.."Results of Vote-Poll Nr: "..num.."\r\n"
tmp = tmp.."Vote "..question.."\r\n"
tmp = tmp.."------------------------------\r\n"
tmp = tmp.."Yes: "..ny.."\r\n"
tmp = tmp.."No: "..nn.."\r\n"
tmp = tmp.."------------------------------\r\n"
if (file == oldpolls) then
tmp = tmp.."Closed Vote-Poll\r\n"
elseif (file == votetext) then
tmp = tmp.."Active Vote-Poll\r\n"
end
end
end
end
readfrom()
return tmp
end
function Vote(user, number, opt)
local tmp = ""
local time = 0
if (vt[user.sName] == 1 and nr[user.sName] == number) then
time = 2
else
readfrom(votetext)
while 1 do
local line = read()
if (line == nil) then
break
else
local s,e, num, question, ny, nn = strfind(line,"Nr:%s+(%S+)%s+(.*)Yes:%s+(%S+)%s+No:%s+(%S+)%s+Active:")
if (tonumber(num) ~= nil and tonumber(num) == number) then
if (opt == "y") then
ny = tonumber(ny) + 1
elseif (opt == "n") then
nn = tonumber(nn) + 1
end
tmp = tmp.."Nr: "..number.." "..question.."Yes: "..ny.." No: "..nn.." Active: Yes\r\n"
time = 1
else
tmp = tmp..line.."\r\n"
end
end
end
readfrom()
writeto(votetext)
write(tmp)
writeto()
end
return time
end
function DelOldPoll(user, number)
local tmp = ""
local time = 0
readfrom(oldpolls)
while 1 do
local line = read()
if (line == nil) then
break
else
local s,e, num, question, ny, nn = strfind(line,"Nr:%s+(%S+)%s+(.*)Yes:%s+(%S+)%s+No:%s+(%S+)%s+Active:")
if (tonumber(num) ~= nil and tonumber(num) == number) then
time = 1
else
tmp = tmp..line.."\r\n"
end
end
end
readfrom()
writeto(oldpolls)
write(tmp)
writeto()
return time
end
Best regards, nErBoS
Works perfectly now.
Great script, great job and tanx for all your hard work.
I preceate it.
This script is done !! :D :D :D
First of all this IS a great script!
But i discovered that it is still possible to cheat. I don't know how but some of my users managed to vote at least twice.
Could it be possible for you to add a better kind of check to prevent cheating?
I am thinking of a 3rd text file were the name and voting poll number is stored and backcheked if a user tries to vote again.
Can you do this?
I would really need a reliable voting script since i have some important issues to resolve within my hub...
looking foreward to your answer and or your enhanced script.
Keep up the good work!
Hi,
Yes it?s possible to do that, i will make a update in this script when got some free time.
Best regards, nErBoS
First of all thanks for your quick reply. I really appreciate your effort.
I know this might sound a bit pressing matters, but can you give me an approimate ETA of this update i requested/you announced?
Thank you very much,
Hi,
Well i will try this night if i don?t get home tired or tomorrow in the morning.
Best regards, nErBoS
This is in icelandic :o) and I did some look improofments
Bot = "(=K?nnun=)"
vt = {}
nr = {}
votetext = "votepoll.txt" --Ver?ur b?in til sj?lkrafa ? script m?ppuni
oldpolls = "oldpolls.txt" --Ver?ur b?in til sj?lkrafa ? script m?ppuni
function Main()
frmHub:RegBot(Bot)
end
function NewUserConnected(user, data)
if (vt[user.sName] == nil) then
vt[user.sName] = 0
end
if (nr[user.sName] == nil) then
nr[user.sName] = 0
end
end
function DataArrival(user, data)
if (strsub(data,1,1)=="<") or (strsub(data,1,5+strlen(Bot))=="$To: "..Bot) then
data=strsub(data,1,strlen(data)-1)
s,e,cmd = strfind(data,"%b<>%s+(%S+)")
if (cmd=="+votehelp") then
local msg = ""
if (user.iProfile == 0) then
msg = msg.."Skipanir K?nnunar scriptsins:\r\n"
msg = msg.."\r\n"
msg = msg.."+createvote \tB?r til k?nnun (nr = n?mer sem ?? gefur k?nnuninni) (spurning = Spurning k?nnunarinnar)\r\n"
msg = msg.."+stopvote \t\t\tLokar k?nnun \r\n"
msg = msg.."+showvote \tS?nir ?tkomu konnunar (old = gamlar kannanir) e?a (new = Kannanir sem eru ? gangi)\r\n"
msg = msg.."+svmain \t\tS?nir st??u k?nnunar ? main (old = gamlar kannanir) e?a (new = Kannanir sem eru ? gangi)\r\n"
msg = msg.."+votelist\t\t\t\tS?nir allar gamlar kannanir\r\n"
msg = msg.."+votefor\t\t\t\tS?nir hva?a kannanir eru ? gangi sem ?? getur greitt atkv??i ?\r\n"
msg = msg.."+vote \t\t\tTil a? kj?sa (nr = n?mer k?nnunar)(y = j?) e?a (n = nei)\r\n"
msg = msg.."+delvote \t\t\tEy?ir loka?ri k?nnun (nr = n?mer k?nnunar)\r\n"
msg = msg.."\r\n"
user:SendPM(Bot, msg)
else
msg = msg.."Skipanir K?nnunar scriptsins:\r\n"
msg = msg.."\r\n"
msg = msg.."+votefor\t\t\tS?nir hva?a kannanir eru ? gangi sem ?? getur greitt atkv??i ?\r\n"
msg = msg.."+vote \t\tTil a? kj?sa (nr = n?mer k?nnunar)(y = j?) e?a (n = nei)\r\n"
msg = msg.."\r\n"
user:SendPM(Bot, msg)
end
return 1
elseif (cmd=="+createvote") then
if (user.iProfile == 0) then
local s,e,number,question = strfind(data,"%b<>%s+%S+%s+(%S+)%s+(.*)")
if (tonumber(number) == nil) then
user:SendPM(Bot, "Villa, +createvote , nr ver?ur a? vera tala.")
else
number = tonumber(number)
if (question == nil or question == "") then
user:SendPM(Bot, "Villa, +createvote , ?? ver?ur a? hafa spurningu.")
else
if (CreatePoll(user, number, question) == 1) then
user:SendPM(Bot, "Kosningarse?ill hefur veri? b?inn til.")
else
user:SendPM(Bot, "kosningase?ill nr: "..number.. "var til, ekki er h?gt a? nota sama n?mer")
end
end
end
else
user:SendPM(Bot, "?? hefur ekki leyfi til a? nota ?essa skipun.")
end
return 1
elseif (cmd=="+stopvote") then
if (user.iProfile == 0) then
local s,e,number = strfind(data,"%b<>%s+%S+%s+(.*)")
if (tonumber(number) == nil or number == "") then
user:SendPM(Bot, "Villa, +stopvote , nr ver?ur a? vera tala.")
else
number = tonumber(number)
if (OldPoll(user, number) == 1) then
user:SendPM(Bot, "K?nnuninni hefur veri? loka? og vista? ? Old Polls.")
else
user:SendPM(Bot, "?a? er engin k?nnun til me? n?merinu "..number..".")
end
end
else
user:SendPM(Bot, "?? hefur ekki leyfi til a? nota ?essa skipun.")
end
return 1
elseif (cmd=="+showvote") then
if (user.iProfile == 0) then
local s,e,number, opt = strfind(data,"%b<>%s+%S+%s+(%S+)%s+(%S+)")
if (tonumber(number) == nil) then
user:SendPM(Bot, "Villa, +showvote , nr ver?ur a? vera tala.")
else
number = tonumber(number)
if (opt == "old") then
if (CheckPoll(user, number, oldpolls) == "") then
user:SendPM(Bot, "?a? er enginn k?nnun til me? n?merinu "..number..".")
else
user:SendPM(Bot, CheckPoll(user, number, oldpolls))
end
elseif(opt == "new") then
if (CheckPoll(user, number, votetext) == "") then
user:SendPM(Bot, "?a? er enginn k?nnun til me? n?merinu "..number..".")
else
user:SendPM(Bot, CheckPoll(user, number, votetext))
end
else
user:SendPM(Bot, "Villa, +showvote ,ver?ur a? vera (old = loku? eldri k?nnun) e?a (new = k?nnun sem ekki er b?i? a? loka)")
end
end
else
user:SendPM(Bot, "?? hefur ekki leyfi til a? nota ?essa skipun")
end
return 1
elseif (cmd=="+svmain") then
if (user.iProfile == 0) then
local s,e,number, opt = strfind(data,"%b<>%s+%S+%s+(%S+)%s+(%S+)")
if (tonumber(number) == nil) then
user:SendPM(Bot, "Villa, +svmain , nr ver?ur a? vera tala.")
else
number = tonumber(number)
if (opt == "old") then
if (CheckPoll(user, number, oldpolls) == "") then
user:SendPM(Bot, "?a? er enginn kosningase?ill til me? n?merinu "..number..".")
else
SendToAll(Bot, CheckPoll(user, number, oldpolls))
end
elseif(opt == "new") then
if (CheckPoll(user, number, votetext) == "") then
user:SendPM(Bot, "?a? er engin k?nnun til me? n?merinu "..number..".")
else
SendToAll(Bot, CheckPoll(user, number, votetext))
end
else
user:SendPM(Bot, "Villa, +svmain , ver?ur a? vera (old = loku? eldri k?nnun) e?a (new = k?nnun sem ekki er b?i? a? loka)")
end
end
else
user:SendPM(Bot, "?? hefur ekki leyfi til a? nota ?essa skipun")
end
return 1
elseif (cmd=="+votelist") then
if (user.iProfile == 0) then
(readfrom(oldpolls) == nil or ReadPoll(user, oldpolls) == "") then
user:SendPM(Bot, "?a? eru engar kannanir b?nar")
else
user:SendPM(Bot, ReadPoll(user, oldpolls))
end
else
user:SendPM(Bot, "?? hefur ekki leyfi til a? nota ?essa skipun")
end
return 1
elseif (cmd=="+votefor") then
if (readfrom(votetext) == nil or ReadPoll(user, votetext) == "") then
user:SendPM(Bot, "?a? er engin k?nnun ? gangi")
else
user:SendPM(Bot, ReadPoll(user, votetext))
end
return 1
elseif (cmd=="+vote") then
local s,e,number,opt = strfind(data,"%b<>%s+%S+%s+(%S+)%s+(%S+)")
if (tonumber(number) == nil) then
user:SendPM(Bot, "Villa, +vote , nr ver?ur a? vera tala.")
else
number = tonumber(number)
if (opt == nil or opt == "" or opt ~= "n" and opt ~= "y") then
user:SendPM(Bot, "Villa, +vote , ver?ur a? skrifa (y = J?) e?a (n = nei).")
else
if (Vote(user, number, opt) == 1) then
user:SendPM(Bot, "atkv??i ?itt hefur veri? skr??")
vt[user.sName] = 1
nr[user.sName] = number
elseif(Vote(user, number, opt) == 2) then
user:SendPM(Bot, "?? varst b?inn a? kj?sa ? ?essari k?nnun")
else
user:SendPM(Bot, "?a? er engin k?nnun til me? n?merinu "..number..".")
end
end
end
return 1
elseif (cmd=="+delvote") then
if (user.iProfile == 0) then
local s,e,number = strfind(data,"%b<>%s+%S+%s+(%S+)")
if (tonumber(number) == nil) then
user:SendPM(Bot, "Villa, +delvote , nr ver?ur a? vera tala.")
else
number = tonumber(number)
if (DelOldPoll(user, number) == 0) then
user:SendPM(Bot, "?a? er enginn g?mul k?nnun me? n?merinu "..number)
else
user:SendPM(Bot, "G?mlu k?nnuninni hefur veri? eytt")
end
end
else
user:SendPM(Bot, "?? hefur ekki leyfi til a? nota ?essa skipun.")
end
return 1
end
end
end
function CreatePoll(user, number, question)
local tmp = ""
local time = 0
readfrom(oldpolls)
while 1 do
local line = read()
if (line == nil) then
break
else
local s,e,num = strfind(line,"Nr:%s+(%S+)%s+")
if (tonumber(num) ~= nil and tonumber(num) == number) then
time = 2
else
end
end
end
readfrom()
readfrom(votetext)
while 1 do
local line = read()
if (line == nil) then
if (time == 2) then
break
else
tmp = tmp.."Nr: "..number.." "..question.." Yes: 0 No: 0 Active: Yes\r\n"
time = 1
break
end
else
local s,e,num = strfind(line,"Nr:%s+(%S+)%s+")
if (tonumber(num) ~= nil and tonumber(num) == number) then
tmp = tmp..line.."\r\n"
time = 2
else
tmp = tmp..line.."\r\n"
end
end
end
readfrom()
writeto(votetext)
write(tmp)
writeto()
return time
end
function OldPoll(user, number)
local tmp = ""
local tmp2 = ""
local time = 0
readfrom(votetext)
while 1 do
local line = read()
if (line == nil) then
break
else
local s,e, num, question, ny, nn = strfind(line,"Nr:%s+(%S+)%s+(.*)Yes:%s+(%S+)%s+No:%s+(%S+)%s+Active:")
if (tonumber(num) ~= nil and tonumber(num) == number) then
tmp2 = tmp2.."Nr: "..number.." "..question.." Yes: "..ny.." No: "..nn.." Active: No\r\n"
time = 1
else
tmp = tmp..line.."\r\n"
end
end
end
readfrom()
writeto(votetext)
write(tmp)
writeto()
if (time == 0) then
else
appendto(oldpolls)
write(tmp2)
writeto()
end
return time
end
function CheckPoll(user, number, file)
local tmp = ""
readfrom(file)
while 1 do
local line = read()
if (line == nil) then
break
else
local s,e, num, question, ny, nn = strfind(line,"Nr:%s+(%S+)%s+(.*)Yes:%s+(%S+)%s+No:%s+(%S+)%s+Active:")
if (tonumber(num) ~= nil and tonumber(num) == number) then
tmp = tmp.. " \r\n"
tmp = tmp.."\r\n<>===================>> K?nnun <<===================<>\r\n"
tmp = tmp.." K?nnun Nr: "..num.."\r\n"
tmp = tmp.." Spurningin: "..question.."\r\n"
tmp = tmp.."<>=================================================<>\r\n"
tmp = tmp.. " \r\n"
tmp = tmp.. "\t\t\t J? svara: "..ny.."\r\n"
tmp = tmp.. "\t\t\tNei svara: "..nn.."\r\n"
tmp = tmp.. " \r\n"
tmp = tmp.."<> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<> \r\n"
if (tonumber(ny) > tonumber(nn)) then
tmp = tmp.."\t\t\t J? er a? vinna.\r\n"
tmp = tmp.."<>=================================================<>\r\n"
elseif (tonumber(ny) < tonumber(nn)) then
tmp = tmp.."\t\t\tNei er a? vinna.\r\n"
tmp = tmp.."<>=================================================<>\r\n"
elseif (tonumber(ny) == tonumber(nn)) then
tmp = tmp.."\t\t\t?a? er jafnt.\r\n"
tmp = tmp.."<>=================================================<>\r\n"
end
break
else
end
end
end
readfrom()
return tmp
end
function ReadPoll(user, file)
local tmp = ""
readfrom(file)
while 1 do
local line = read()
if (line == nil or line == "") then
break
else
local s,e, num, question, ny, nn = strfind(line,"Nr:%s+(%S+)%s+(.*)Yes:%s+(%S+)%s+No:%s+(%S+)%s+Active:")
if (num == nil) then
else
tmp = tmp.."\r\n<>===================>> K?nnun <<===================<>\r\n"
tmp = tmp.." K?nnun Nr: "..num.."\r\n"
tmp = tmp.." Spurningin: "..question.."\r\n"
tmp = tmp.."<>=================================================<>\r\n"
tmp = tmp.. " \r\n"
tmp = tmp.. "\t\t\t J? sv?ru?u: "..ny.."\r\n"
tmp = tmp.. "\t\t\tNei sv?ru?u: "..nn.."\r\n"
tmp = tmp.. " \r\n"
tmp = tmp.."<>=================================================<>\r\n"
(file == oldpolls) then
tmp = tmp.."G?mul k?nnun, ekki h?gt a? kj?sa\r\n"
elseif (file == votetext) then
tmp = tmp.." Ger?u +vote t.d. <+vote 1 y>"
end
end
end
end
readfrom()
return tmp
end
function Vote(user, number, opt)
local tmp = ""
local time = 0
if (vt[user.sName] == 1 and nr[user.sName] == number) then
time = 2
else
readfrom(votetext)
while 1 do
local line = read()
if (line == nil) then
break
else
local s,e, num, question, ny, nn = strfind(line,"Nr:%s+(%S+)%s+(.*)Yes:%s+(%S+)%s+No:%s+(%S+)%s+Active:")
if (tonumber(num) ~= nil and tonumber(num) == number) then
if (opt == "y") then
ny = tonumber(ny) + 1
elseif (opt == "n") then
nn = tonumber(nn) + 1
end
tmp = tmp.."Nr: "..number.." "..question.."Yes: "..ny.." No: "..nn.." Active: Yes\r\n"
time = 1
else
tmp = tmp..line.."\r\n"
end
end
end
readfrom()
writeto(votetext)
write(tmp)
writeto()
end
return time
end
function DelOldPoll(user, number)
local tmp = ""
local time = 0
readfrom(oldpolls)
while 1 do
local line = read()
if (line == nil) then
break
else
local s,e, num, question, ny, nn = strfind(line,"Nr:%s+(%S+)%s+(.*)Yes:%s+(%S+)%s+No:%s+(%S+)%s+Active:")
if (tonumber(num) ~= nil and tonumber(num) == number) then
time = 1
else
tmp = tmp..line.."\r\n"
end
end
end
readfrom()
writeto(oldpolls)
write(tmp)
writeto()
return time
end
[15:10:30] <(=K?nnun=)>
- <>===================>> K?nnun <<===================<>
K?nnun Nr: 2
Spurningin: ? a? h?kka min shere ? 50GB
- <>=================================================<>
J? sv?ru?u: 12
Nei sv?ru?u: 18
- <>=================================================<>
Ger?u +vote t.d. <+vote 1 y>
I like this look :o)........don?t know about you
argg X( .... did not come out right, center the q and nr and y and n, thats how it looks....... hehe
Hi there didn't you say you would add this logging feature i proposed toi your voting bot?
I really need it and fast... :-)
Thx for your efforts
Hi,
I have been had lot of work and some achool problems :P. I will try to catch up tomorrow.
Best regards, nErBoS
you're the man
Hi,
Made a tiny vote poll HERE (http://board.univ-angers.fr/thread.php?threadid=1855&boardid=11&styleid=1&sid=de4f87dbba9b6f332c8581096ec4a7f3) i will start to updated this one with some functions i made on that one.
Best regards, nErBoS
???
I don't understand. This bot here is great. I just want you to add a verification to check if a user has already voted. The nick/voteinfo should be saved in a 3rd file.
DON'T ABANDON THIS BOT it's too good to abandon it.
Please just update it!
Hi,
I didn?t said that, i said i was going to update this BOT with somethings that i made to the other.
Best regards, nErBoS
Hi,
I have made a complety re-write to this Bot, check it HERE (http://board.univ-angers.fr/thread.php?threadid=1606&boardid=12&styleid=1&sid=fbdcd70292228ada8576ff2c845f5ca1)
Best regards, nErBoS