VotingBot
 

News:

29 December 2022 - PtokaX 0.5.3.0 (20th anniversary edition) released...
11 April 2017 - PtokaX 0.5.2.2 released...
8 April 2015 Anti child and anti pedo pr0n scripts are not allowed anymore on this board!
28 September 2015 - PtokaX 0.5.2.1 for Windows 10 IoT released...
3 September 2015 - PtokaX 0.5.2.1 released...
16 August 2015 - PtokaX 0.5.2.0 released...
1 August 2015 - Crowdfunding for ADC protocol support in PtokaX ended. Clearly nobody want ADC support...
30 June 2015 - PtokaX 0.5.1.0 released...
30 April 2015 Crowdfunding for ADC protocol support in PtokaX
26 April 2015 New support hub!
20 February 2015 - PtokaX 0.5.0.3 released...
13 April 2014 - PtokaX 0.5.0.2 released...
23 March 2014 - PtokaX testing version 0.5.0.1 build 454 is available.
04 March 2014 - PtokaX.org sites were temporary down because of DDOS attacks and issues with hosting service provider.

Main Menu

VotingBot

Started by (=CyberPimp=), 24 February, 2004, 22:54:21

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

(=CyberPimp=)



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=)

nErBoS

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
--## nErBoS Spot ##--

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
--## nErBoS Spot ##--

(=CyberPimp=)

: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.

(=CyberPimp=)

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

nErBoS

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
--## nErBoS Spot ##--

(=CyberPimp=)

Now nothing works hehe

(=CyberPimp=)

no sorry, my mistake hehe

nErBoS

Is it working ok???
--## nErBoS Spot ##--

(=CyberPimp=)

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.

(=CyberPimp=)

+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.

nErBoS

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
--## nErBoS Spot ##--

(=CyberPimp=)

+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

nErBoS

#13
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
--## nErBoS Spot ##--

(=CyberPimp=)

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.

(=CyberPimp=)

#15
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

Flux

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...
? Official HoD Website - http://www.houseofdance.net
? Official HoD Hub Community -  hodhub.dyndns.org:2007

nErBoS

Hi,

Please show me your votetext.txt.

Best regards, nErBoS
--## nErBoS Spot ##--

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
--## nErBoS Spot ##--

(=CyberPimp=)

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............

nErBoS

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
--## nErBoS Spot ##--

(=CyberPimp=)

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 .

nErBoS

#22
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
--## nErBoS Spot ##--

(=CyberPimp=)

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

nErBoS

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
--## nErBoS Spot ##--

SMF spam blocked by CleanTalk