Horoscope script
 

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

Horoscope script

Started by bastya_elvtars, 27 July, 2007, 01:40:18

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

bastya_elvtars

It gets the daily horoscope from a site and fetches it.

It will open a DOS window at the script startup and every
24 hour afterwards. It counts the 24 hours from the startup.
I suppose that sites are updated every 24 hours.

Note that updating blocks the hub for 10 or more seconds.
This is currently unavoidable because there is nothing that
supports coding async socket operations.

Enjoy!
Everything could have been anything else and it would have just as much meaning.

jack_port1000

tanx a lot
[10:55] Syntax ...T.JAGIRDAR\Desktop\New Folder (2)\scripts\zodiac.lua:39: bad argument #1 to 'gsub' (string expected, got nil)

little bugs there canu add right clike command like horoscope and all zodiac

sorry i prees by mistake notyfi tab sorry for tat

sphinx_spb

It's already done by russians  ;)
I personally made allinone script for fetching info: weather (for all cities), goroscope, news, anecdots, bash.org.ru quotes, and currency rates. You can familiarize with this script on my hub, but of course all this info is russian. And it not blocks the hub and not opens DOS window.  ;D

bastya_elvtars

Quote from: jack_port1000 on 27 July, 2007, 07:45:15
tanx a lot
[10:55] Syntax ...T.JAGIRDAR\Desktop\New Folder (2)\scripts\zodiac.lua:39: bad argument #1 to 'gsub' (string expected, got nil)

little bugs there canu add right clike command like horoscope and all zodiac

That error should only occur if you intentionally closed the DOS window or deleted files from the zodiac directory manually.

Quote from: sphinx_spb on 27 July, 2007, 10:35:18
It's already done by russians  ;)
I personally made allinone script for fetching info: weather (for all cities), goroscope, news, anecdots, bash.org.ru quotes, and currency rates. You can familiarize with this script on my hub, but of course all this info is russian. And it not blocks the hub and not opens DOS window.  ;D

How could you achieve that it doesn't block the hub?
Everything could have been anything else and it would have just as much meaning.

sphinx_spb

Quote from: bastya_elvtars on 27 July, 2007, 10:43:22
How could you achieve that it doesn't block the hub?
Because my script uses PxWSA and fetching info from RSS pages (also possible from html, but more difficult).

bastya_elvtars

Quote from: sphinx_spb on 27 July, 2007, 13:32:34
Because my script uses PxWSA and fetching info from RSS pages (also possible from html, but more difficult).

I had problems with non-blocking socket features of PXWSA and its license disallows incorporation into script packs.
Everything could have been anything else and it would have just as much meaning.

jack_port1000

bastya great work its working great but can u please add right clicke for this thing

bastya_elvtars

Quote from: jack_port1000 on 29 July, 2007, 10:25:26
bastya great work its working great but can u please add right clicke for this thing

Sure, gimme 20 more minutes.
Updated the archive in the first post.
Everything could have been anything else and it would have just as much meaning.

elgee

is it possible to get the script updated to remove most of it in this lines:

QuoteCopyright (c)2008 Free Horoscope Daily * About Aquarius * Contact Us   var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."); document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));   var pageTracker = _gat._getTracker("UA-1984878-3"); pageTracker._initData(); pageTracker._trackPageview();   

:)

bastya_elvtars

Updated zodiac.lua with my new HTML parser code. It works here.

Code: lua
--[[
Zodiac bot by bastya_elvtars
It gets the daily horoscope from a site and fetches it.

It will open a DOS window at the script startup and every
24 hour afterwards. It counts the 24 hours from the startup.
I suppose that sites are updated every 24 hours.

Note that updating blocks the hub for 10 or more seconds.
This is currently unavoidable because there is nothing that
supports coding async socket operations.

You can configure the command and the bot below.
]]

command="horoscope"

Bot=
  {
    name="Zodiac",
    email="zodiac@localhost",
    desc="Horoscope bot"
  }

-- Source follows. Do not edit below.

nl = "\n"

function HTML_ToText (file)
  -- Declare variables, load the file. Make tags lowercase.
  local text
  local f=io.open (file)
  if f then
    if f:seek("end") <= 0 then return end
    f:seek("set")
    text = f:read ("*a")
    f:close()
  end
  text = string.gsub (text,"(<([^>]-)>)",function (str) return str:lower() end)
  --[[ 
  First we kill the developer formatting (tabs, CR, LF)
  and produce a long string with no newlines and tabs.
  We also kill repeated spaces as browsers ignore them anyway.
  ]]
  local devkill=
    {
      ["("..string.char(10)..")"] = " ",
      ["("..string.char(13)..")"] = " ",
      ["("..string.char(15)..")"] = "",
      ["(%s%s+)"]=" ",
    }
  for pat, res in pairs (devkill) do
    text = string.gsub (text, pat, res)
  end
  -- Then we remove the header. We do this by stripping it first.
  text = string.gsub (text, "(<%s*head[^>]*>)", "<head>")
  text = string.gsub (text, "(<%s*%/%s*head%s*>)", "</head>")
  text = string.gsub (text, "(<head>,*<%/head>)", "")
  -- Kill all scripts. First we nuke their attribs.
  text = string.gsub (text, "(<%s*script[^>]*>)", "<script>")
  text = string.gsub (text, "(<%s*%/%s*script%s*>)", "</script>")
  text = string.gsub (text, "(<script>,*<%/script>)", "")
  -- Ok, same for styles.
  text = string.gsub (text, "(<%s*style[^>]*>)", "<style>")
  text = string.gsub (text, "(<%s*%/%s*style%s*>)", "</style>")
  text = string.gsub (text, "(<style>.*<%/style>)", "")
  
  -- Replace <td> and <th> with tabulators.
  text = string.gsub (text, "(<%s*td[^>]*>)","\t")
  text = string.gsub (text, "(<%s*th[^>]*>)","\t")
  
  -- Replace <br> with linebreaks.
  text = string.gsub (text, "(<%s*br%s*%/%s*>)",nl)
  
  -- Replace <li> with an asterisk surrounded by spaces.
  -- Replace </li> with a newline.
  text = string.gsub (text, "(<%s*li%s*%s*>)"," *  ")
  text = string.gsub (text, "(<%s*/%s*li%s*%s*>)",nl)
  
  -- <p>, <div>, <tr>, <ul> will be replaced to a double newline.
  text = string.gsub (text, "(<%s*div[^>]*>)", nl..nl)
  text = string.gsub (text, "(<%s*p[^>]*>)", nl..nl)
  text = string.gsub (text, "(<%s*tr[^>]*>)", nl..nl)
  text = string.gsub (text, "(<%s*%/*%s*ul[^>]*>)", nl..nl)
    
  -- Some petting with the <a> tags. :-P
--   local addresses,c = {},0
--   text=string.gsub(text,"<%s*a.-href=[\'\"](%S+)[\'\"][^>]*>(.-)<%s*%/*%s*a[^>]->", -- gets URL from a tag, and the enclosed name
--   function (url,name)
--     c = c + 1
--     name = string.gsub (name, "<([^>]-)>","") -- strip name from tags (e. g. images as links)
--     
--     -- We only consider the URL valid if the name contains alphanumeric characters.
--     if name:find("%w") then print(url, name, c) table.insert (addresses, {url, name}) return name.."["..#addresses.."]" else return "" end    
--   end)
 
  -- Nuke all other tags now.
  text = string.gsub (text, "(%b<>)","")
  
  -- Replace entities to their correspondant stuff where applicable.
  -- C# is owned badly here by using a table. :-P
  -- A metatable secures entities, so you can add them natively as keys.
  -- Enclosing brackets also get added automatically (capture!)
  local entities = {}
  setmetatable (entities,
  {
    __newindex = function (tbl, key, value)
      key = string.gsub (key, "(%#)" , "%%#")
      key = string.gsub (key, "(%&)" , "%%&")
      key = string.gsub (key, "(%;)" , "%%;")
      key = string.gsub (key, "(.+)" , "("..key..")")
      rawset (tbl, key, value)
    end
  })
  entities = 
  {
    ["&nbsp;"] = " ",
    ["&bull;"] = " *  ",
    ["&lsaquo;"] = "<",
    ["&rsaquo;"] = ">",
    ["&trade;"] = "(tm)",
    ["&frasl;"] = "/",
    ["&lt;"] = "<",
    ["&gt;"] = ">",
    ["&copy;"] = "(c)",
    ["&reg;"] = "(r)",
    -- Then kill all others.
    -- You can customize this table if you would like to, 
    -- I just got bored of copypasting. :-)
    -- http://hotwired.lycos.com/webmonkey/reference/special_characters/
    ["%&.+%;"] = "",
  }
  for entity, repl in pairs (entities) do
    text = string.gsub (text, entity, repl)
  end
  text = text..nl..nl..("-"):rep(27)..nl..nl
  
--   for k,v in ipairs (addresses) do
--     text = text.."["..k.."] "..v[1]..nl
--   end
--   if #addresses > 0 then
--     text=text..nl:rep(2)..("-"):rep(2)..nl
--     for key, tbl in ipairs(addresses) do
--       text = text..nl.."["..key.."]"..tbl[1]
--     end
--   end
  
  return text
  
end

zodiac=
  {
    "aquarius",
    "aries",
    "cancer",
    "capricorn",
    "gemini",
    "leo",
    "libra",
    "pisces",
    "sagittarius",
    "scorpio",
    "taurus",
    "virgo"
  }
  
zodtbl={}
  
function FetchZodiacForToday()
  local loc=string.gsub(frmHub:GetPtokaXLocation(),"%/",[[\]]) -- We replace the / to \. Works around a PXLUA bug. :-P
  local x=os.clock()
  SendToAll(Bot.name,"Getting the fresh horoscope. This slows down the hub, so please be patient.") -- Get the batchfile created
  local f=io.open("zodiac/getpages.cmd","w+")
  f:write("@echo off\nREM This batch file is generated by the zodiac script.\nREM It will be overwritten on every update.\r\n")
  for _,val in ipairs (zodiac) do
    f:write(loc.."scripts\\zodiac\\wget.exe -O"..loc.."scripts\\zodiac\\"..val..".html http://www.freehoroscopedaily.com/"..val.."/\n")
  end
  f:close()

  os.execute (loc.."scripts\\zodiac\\getpages.cmd") -- Run it

  for _,sign in ipairs(zodiac) do -- Parse the HTML files. It is faster to do it right away.
    zodtbl[sign]=1
    local f=io.open("zodiac/"..sign..".txt","w+")
    f:write(HTML_ToText("zodiac/"..sign..".html"))
    f:close()
  end
  
  SendToAll(Bot.name,"\r\nHoroscope fetched. It took "..os.clock()-x.." seconds. Check your horoscope with "..frmHub:GetPrefixes()[1]..command.." <sign>\r\nType "..frmHub:GetPrefixes()[1]..command.." for help!")
end

function Main()
  frmHub:RegBot(Bot.name, 1, Bot.desc, Bot.email )
  FetchZodiacForToday() -- Get the thing.
  zodiac_rc=""
  for k, v in ipairs(zodiac) do
    zodiac_rc=zodiac_rc.."$UserCommand 1 3 Horoscope\\"..v.."$<%[mynick]> !"..command.." "..v.."&#124;|"
  end
  zodiac_rc=zodiac_rc:sub(1,-2)
  SetTimer (3600*60000) -- Fire a timer, it will tick every day.
  StartTimer()
end

OnTimer = FetchZodiacForToday -- OK, another day passed by, get the stuff again.

function ChatArrival(user,data) -- Usual stuff: command processing, sending the results
  local prf="[%"..table.concat(frmHub:GetPrefixes(), "%").."]"
  data = data:sub(1,-2)
  local cmd,sign = data:match("%b<>%s+"..prf.."(%S*)%s*(%S*)")
  if cmd == command then
    if not zodtbl[sign] then
      user:SendPM(Bot.name,"Usage: "..frmHub:GetPrefixes()[1]..command.." <sign>\r\nAvailable signs:\r\n"..("-"):rep(25).."\r\n"..table.concat(zodiac,"\r\n"))
    else
      local f=io.open("zodiac/"..sign..".txt","r")
      local contents = string.gsub(f:read("*a"),string.char(10), "\r\n")
      f:close()
      user:SendPM(Bot.name,"\r\n"..contents)
    end
    return 1
  end
end

function NewUserConnected(user)
  user:SendData(zodiac_rc)
end

OpConnected = NewUserConnected

--[[
Copyright (c) 2007, bastya_elvtars

All rights reserved.

Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:

    * Redistributions of source code must retain the above copyright notice, this
      list of conditions and the following disclaimer.
    * Redistributions in binary form must reproduce the above copyright notice,
      this list of conditions and the following disclaimer in the documentation
      and/or other materials provided with the distribution.
    * Neither the name of the author nor the names of contributors may be used
      to endorse or promote products derived from this code without specific
      prior written permission.

THIS CODE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
CODE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

----------------------------------------------------------------------------------

This bot utilizes the GNU wget utiliy. That program is
licensed under the GPL. It is bundled with the script
and its source can be downloaded from:

http://www.gnu.org/software/wget/wget.html

The original binary is from:

http://users.ugent.be/~bpuype/wget/
]]
Everything could have been anything else and it would have just as much meaning.

elgee

It's working here as well.
Looking much better now so thank you for this :)

massive

Hi, I have an error in my ptokax 0.4.1, shows me its:
Syntax ... ttrashe \ New Folder \ Ekzecutor \ scripts \ zodiac.lua: 226: attempt to call method 'SendData' (a nil value)

One solution, if you like it?

ATAG

QuoteHoroscope script
? on: July 27, 2007, 01:40:18 am ?
You have to rewrite it, PtokaX has got new Lua API for years...

PPK

 :P

--[[
Zodiac bot by bastya_elvtars
It gets the daily horoscope from a site and fetches it.

It will open a DOS window at the script startup and every
24 hour afterwards. It counts the 24 hours from the startup.
I suppose that sites are updated every 24 hours.

Note that updating blocks the hub for 10 or more seconds.
This is currently unavoidable because there is nothing that
supports coding async socket operations.

You can configure the command and the bot below.
]]

command="horoscope"

Bot=
  {
    name="Zodiac",
    email="zodiac@localhost",
    desc="Horoscope bot"
  }

-- Source follows. Do not edit below.

nl = "\n"

function HTML_ToText (file)
  -- Declare variables, load the file. Make tags lowercase.
  local text
  local f=io.open (file)
  if f then
    if f:seek("end") <= 0 then return end
    f:seek("set")
    text = f:read ("*a")
    f:close()
  end
  text = string.gsub (text,"(<([^>]-)>)",function (str) return str:lower() end)
  --[[ 
  First we kill the developer formatting (tabs, CR, LF)
  and produce a long string with no newlines and tabs.
  We also kill repeated spaces as browsers ignore them anyway.
  ]]
  local devkill=
    {
      ["("..string.char(10)..")"] = " ",
      ["("..string.char(13)..")"] = " ",
      ["("..string.char(15)..")"] = "",
      ["(%s%s+)"]=" ",
    }
  for pat, res in pairs (devkill) do
    text = string.gsub (text, pat, res)
  end
  -- Then we remove the header. We do this by stripping it first.
  text = string.gsub (text, "(<%s*head[^>]*>)", "<head>")
  text = string.gsub (text, "(<%s*%/%s*head%s*>)", "</head>")
  text = string.gsub (text, "(<head>,*<%/head>)", "")
  -- Kill all scripts. First we nuke their attribs.
  text = string.gsub (text, "(<%s*script[^>]*>)", "<script>")
  text = string.gsub (text, "(<%s*%/%s*script%s*>)", "</script>")
  text = string.gsub (text, "(<script>,*<%/script>)", "")
  -- Ok, same for styles.
  text = string.gsub (text, "(<%s*style[^>]*>)", "<style>")
  text = string.gsub (text, "(<%s*%/%s*style%s*>)", "</style>")
  text = string.gsub (text, "(<style>.*<%/style>)", "")
  
  -- Replace <td> and <th> with tabulators.
  text = string.gsub (text, "(<%s*td[^>]*>)","\t")
  text = string.gsub (text, "(<%s*th[^>]*>)","\t")
  
  -- Replace <br> with linebreaks.
  text = string.gsub (text, "(<%s*br%s*%/%s*>)",nl)
  
  -- Replace <li> with an asterisk surrounded by spaces.
  -- Replace </li> with a newline.
  text = string.gsub (text, "(<%s*li%s*%s*>)"," *  ")
  text = string.gsub (text, "(<%s*/%s*li%s*%s*>)",nl)
  
  -- <p>, <div>, <tr>, <ul> will be replaced to a double newline.
  text = string.gsub (text, "(<%s*div[^>]*>)", nl..nl)
  text = string.gsub (text, "(<%s*p[^>]*>)", nl..nl)
  text = string.gsub (text, "(<%s*tr[^>]*>)", nl..nl)
  text = string.gsub (text, "(<%s*%/*%s*ul[^>]*>)", nl..nl)
    
  -- Some petting with the <a> tags. :-P
--   local addresses,c = {},0
--   text=string.gsub(text,"<%s*a.-href=[\'\"](%S+)[\'\"][^>]*>(.-)<%s*%/*%s*a[^>]->", -- gets URL from a tag, and the enclosed name
--   function (url,name)
--     c = c + 1
--     name = string.gsub (name, "<([^>]-)>","") -- strip name from tags (e. g. images as links)
--     
--     -- We only consider the URL valid if the name contains alphanumeric characters.
--     if name:find("%w") then print(url, name, c) table.insert (addresses, {url, name}) return name.."["..#addresses.."]" else return "" end    
--   end)
 
  -- Nuke all other tags now.
  text = string.gsub (text, "(%b<>)","")
  
  -- Replace entities to their correspondant stuff where applicable.
  -- C# is owned badly here by using a table. :-P
  -- A metatable secures entities, so you can add them natively as keys.
  -- Enclosing brackets also get added automatically (capture!)
  local entities = {}
  setmetatable (entities,
  {
    __newindex = function (tbl, key, value)
      key = string.gsub (key, "(%#)" , "%%#")
      key = string.gsub (key, "(%&)" , "%%&")
      key = string.gsub (key, "(%;)" , "%%;")
      key = string.gsub (key, "(.+)" , "("..key..")")
      rawset (tbl, key, value)
    end
  })
  entities = 
  {
    ["&nbsp;"] = " ",
    ["&bull;"] = " *  ",
    ["&lsaquo;"] = "<",
    ["&rsaquo;"] = ">",
    ["&trade;"] = "(tm)",
    ["&frasl;"] = "/",
    ["&lt;"] = "<",
    ["&gt;"] = ">",
    ["&copy;"] = "(c)",
    ["&reg;"] = "(r)",
    -- Then kill all others.
    -- You can customize this table if you would like to, 
    -- I just got bored of copypasting. :-)
    -- http://hotwired.lycos.com/webmonkey/reference/special_characters/
    ["%&.+%;"] = "",
  }
  for entity, repl in pairs (entities) do
    text = string.gsub (text, entity, repl)
  end
  text = text..nl..nl..("-"):rep(27)..nl..nl
  
--   for k,v in ipairs (addresses) do
--     text = text.."["..k.."] "..v[1]..nl
--   end
--   if #addresses > 0 then
--     text=text..nl:rep(2)..("-"):rep(2)..nl
--     for key, tbl in ipairs(addresses) do
--       text = text..nl.."["..key.."]"..tbl[1]
--     end
--   end
  
  return text
  
end

zodiac=
  {
    "aquarius",
    "aries",
    "cancer",
    "capricorn",
    "gemini",
    "leo",
    "libra",
    "pisces",
    "sagittarius",
    "scorpio",
    "taurus",
    "virgo"
  }
  
zodtbl={}
  
function FetchZodiacForToday()
  local loc=string.gsub(Core.GetPtokaXPath(),"%/",[[\]]) -- We replace the / to \. Works around a PXLUA bug. :-P
  local x=os.clock()
  Core.SendToAll("<"..Bot.name.."> Getting the fresh horoscope. This slows down the hub, so please be patient.|") -- Get the batchfile created
  local f=io.open(Core.GetPtokaXPath().."scripts/zodiac/getpages.cmd","w+")
  f:write("@echo off\nREM This batch file is generated by the zodiac script.\nREM It will be overwritten on every update.\r\n")
  for _,val in ipairs (zodiac) do
    f:write(loc.."scripts\\zodiac\\wget.exe -O"..loc.."scripts\\zodiac\\"..val..".html http://www.freehoroscopedaily.com/"..val.."/\n")
  end
  f:close()

  os.execute (loc.."scripts\\zodiac\\getpages.cmd") -- Run it

  for _,sign in ipairs(zodiac) do -- Parse the HTML files. It is faster to do it right away.
    zodtbl[sign]=1
    local f=io.open(Core.GetPtokaXPath().."scripts/zodiac/"..sign..".txt","w+")
    f:write(HTML_ToText("scripts/zodiac/"..sign..".html"))
    f:close()
  end
  
  Core.SendToAll("<"..Bot.name.."> \r\nHoroscope fetched. It took "..os.clock()-x.." seconds. Check your horoscope with "..string.sub(SetMan.GetString(29),1,1)..command.." <sign>\r\nType "..
      string.sub(SetMan.GetString(29),1,1)..command.." for help!|")
end

function OnStartup()
  Core.RegBot(Bot.name, Bot.desc, Bot.email, true)
  FetchZodiacForToday() -- Get the thing.
  zodiac_rc=""
  for k, v in ipairs(zodiac) do
    zodiac_rc=zodiac_rc.."$UserCommand 1 3 Horoscope\\"..v.."$<%[mynick]> !"..command.." "..v.."&#124;|"
  end
  zodiac_rc=zodiac_rc:sub(1,-2)
  TmrMan.AddTimer(3600*60000) -- Fire a timer, it will tick every day.
end

OnTimer = FetchZodiacForToday -- OK, another day passed by, get the stuff again.

function ChatArrival(user,data) -- Usual stuff: command processing, sending the results
  local prf="[%"..SetMan.GetString(29).."]"
  data = data:sub(1,-2)
  local cmd,sign = data:match("%b<>%s+"..prf.."(%S*)%s*(%S*)")
  if cmd == command then
    if not zodtbl[sign] then
      Core.SendPmToUser(user, Bot.name,"Usage: "..string.sub(SetMan.GetString(29),1,1)..command.." <sign>\r\nAvailable signs:\r\n"..("-"):rep(25).."\r\n"..table.concat(zodiac,"\r\n"))
    else
      local f=io.open("scripts/zodiac/"..sign..".txt","r")
      local contents = string.gsub(f:read("*a"),string.char(10), "\r\n")
      f:close()
      Core.SendPmToUser(user, Bot.name,"\r\n"..contents)
    end
    return true
  end
end

function UserConnected(user)
  Core.SendToUser(user, zodiac_rc)
end

RegConnected = UserConnected
OpConnected = UserConnected

--[[
Copyright (c) 2007, bastya_elvtars

All rights reserved.

Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:

    * Redistributions of source code must retain the above copyright notice, this
      list of conditions and the following disclaimer.
    * Redistributions in binary form must reproduce the above copyright notice,
      this list of conditions and the following disclaimer in the documentation
      and/or other materials provided with the distribution.
    * Neither the name of the author nor the names of contributors may be used
      to endorse or promote products derived from this code without specific
      prior written permission.

THIS CODE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
CODE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

----------------------------------------------------------------------------------

This bot utilizes the GNU wget utiliy. That program is
licensed under the GPL. It is bundled with the script
and its source can be downloaded from:

http://www.gnu.org/software/wget/wget.html

The original binary is from:

http://users.ugent.be/~bpuype/wget/
]]
"Most of you are familiar with the virtues of a programmer. There are three, of course: laziness, impatience, and hubris." - Larry Wall

malhi

im getting all this when i type in hub not horoscope detail


[03:38] <Zodiac> Usage: !horoscope <sign>
Available signs:
-------------------------
aquarius
aries
cancer
capricorn
gemini
leo
libra
pisces
sagittarius
scorpio
taurus
virgo


nothing els i try to type all one by one nothing same thing open again how it will show daily update ?

the-master

#15
Did you try !horoscope leo ?
Did you use the wget module?
keep on sharing :)

malhi

i only run horoscore file nothing els. do i need anything els 2 ?

the-master

#17
Yes, you need the wget part to be able to use it.
Download the zipfile from first post and use updated script, it works  :)
keep on sharing :)

SMF spam blocked by CleanTalk