Esempio n. 1
0
function check_push_events_bitbucket($repo)
{
    $data = get_api_data("/api/1.0/repositories/{$repo}/events", "bitbucket");
    $changesets = get_api_data("/api/1.0/repositories/{$repo}/changesets?limit=10", "bitbucket");
    for ($i = 0; $i < count($data["events"]); $i++) {
        if (isset($data["events"][$i]["utc_created_on"]) == False) {
            continue;
        }
        $timestamp = $data["events"][$i]["utc_created_on"];
        $t = convert_timestamp($timestamp, "Y-m-d H:i:s      ");
        $dt = microtime(True) - $t;
        if ($dt <= TIME_LIMIT_SEC) {
            if ($data["events"][$i]["event"] == "pushed") {
                pm(FEED_CHAN, chr(3) . "13" . "push to https://bitbucket.org/{$repo} @ " . date("H:i:s", $t) . " by " . $data["events"][$i]["user"]["username"]);
                $commits = $data["events"][$i]["description"]["commits"];
                for ($j = 0; $j < count($commits); $j++) {
                    $changeset = bitbucket_get_changeset($changesets, $commits[$j]["hash"]);
                    if ($changeset === False) {
                        pm(FEED_CHAN, "changeset not found");
                        continue;
                    }
                    $desc = $commits[$j]["description"];
                    if ($desc != $changeset["message"]) {
                        continue;
                    }
                    pm(FEED_CHAN, chr(3) . "11" . "  " . $changeset["author"] . ": " . $changeset["message"]);
                    $url = "https://bitbucket.org/{$repo}/commits/" . $commits[$j]["hash"];
                    pm(FEED_CHAN, chr(3) . "11" . "  " . $url);
                }
            }
        }
    }
}
Esempio n. 2
0
function chromas_log($alias, $trailing, $dest)
{
    $params = parse_parameters($trailing, "=", " ");
    if ($params !== False) {
        foreach ($params as $key => $value) {
            if (strpos($key, " ") !== False) {
                $params = False;
                break;
            }
        }
    }
    if ($params === False) {
        term_echo("chromas_log failed: invalid parameters");
        return False;
    }
    # chromas, 23 march 2015
    if (isset($params["until"]) == False) {
        date_default_timezone_set("UTC");
        $params["until"] = strftime("%F %T", time() - 5);
    }
    $paramstr = "";
    foreach ($params as $key => $value) {
        if ($paramstr != "") {
            $paramstr = $paramstr . "&";
        }
        $paramstr = $paramstr . urlencode($key) . "=" . urlencode($value);
    }
    if (isset($params["channel"]) == False) {
        $paramstr = $paramstr . "&channel=" . urlencode($dest);
    }
    if (isset($params["out"]) == False) {
        $paramstr = $paramstr . "&out=irc-full";
    }
    if ($alias == "~log") {
        $uri = "/s/soylent_log.php?" . $paramstr;
    } else {
        $uri = "/s/soylent_log.php?op=" . $alias . "&" . $paramstr;
    }
    if (get_bucket("chromas_irc_log_debug") == "on") {
        pm("chromas", "http://chromas.0x.no" . $uri);
        pm("crutchy", "http://chromas.0x.no" . $uri);
    }
    $response = wget("chromas.0x.no", $uri, 80, ICEWEASEL_UA, "", 10, "", 1024, False);
    $html = trim(strip_headers($response));
    if ($html == "") {
        pm("#", "chromas_log failed: no response");
        return False;
    }
    $lines = explode("\n", trim($html));
    return $lines;
}
Esempio n. 3
0
function minion_talk($nick, $channel, $trailing)
{
    $relays_bucket = "activity.php/minion_talk/relays";
    $relays = get_array_bucket($relays_bucket);
    # flush all outdated relays
    $save_bucket = False;
    foreach ($relays as $freenode_nick => $freenode_channels) {
        foreach ($relays[$freenode_nick] as $freenode_channel => $data) {
            if (microtime(True) - $data["timestamp"] > 10 * 60) {
                unset($relays[$freenode_nick][$freenode_channel]);
                $save_bucket = True;
            }
        }
    }
    if ($nick != "") {
        $account = users_get_account($nick);
        $allowed = array("crutchy", "chromas", "mrcoolbp", "NCommander", "juggs", "TheMightyBuzzard");
        if (in_array($account, $allowed) == True) {
            if ($trailing == ".relays") {
                $n = 0;
                foreach ($relays as $freenode_nick => $freenode_channels) {
                    foreach ($relays[$freenode_nick] as $freenode_channel => $data) {
                        $rem = round(($data["timestamp"] + 10 * 60 - microtime(True)) / 60, 0);
                        pm($channel, chr(3) . "13  {$freenode_nick}: {$freenode_channel} => " . $data["channel"] . " (unset in {$rem} minutes)");
                        $n++;
                    }
                }
                if ($n == 0) {
                    pm($channel, chr(3) . "13  no channel relays currently active");
                }
                return;
            }
            $params = explode(">", $trailing);
            if (count($params) >= 2) {
                $freenode_channel = strtolower(trim($params[0]));
                if (substr($freenode_channel, 0, 1) == "#") {
                    array_shift($params);
                    $msg = trim(implode(">", $params));
                    if (strlen($msg) > 0) {
                        $commands = array("~minion raw sylnt :sylnt PRIVMSG {$freenode_channel} :<{$nick}> {$msg}");
                        internal_macro($commands);
                        $parts = explode(",", $msg);
                        $freenode_nick = strtolower(trim($parts[0]));
                        if (count($parts) > 1 and strpos($freenode_nick, " ") === False) {
                            $relays[$freenode_nick][$freenode_channel] = array("channel" => $channel, "timestamp" => microtime(True));
                            pm($channel, chr(3) . "13  ten minute relay set for \"{$freenode_nick}\" in \"{$freenode_channel}\" on freenode to \"{$channel}\" on this server");
                            $save_bucket = True;
                        }
                    }
                }
            }
        }
    }
    if ($channel == "#freenode") {
        $freenode_nick = extract_text($trailing, chr(3) . "03", chr(3) . " [", False);
        $freenode_channel = extract_text($trailing, chr(3) . " [" . chr(3) . "02", chr(3) . "] " . chr(3) . "05", False);
        if (isset($relays[strtolower($freenode_nick)][$freenode_channel]) == True) {
            $freenode_trailing = extract_text($trailing, chr(3) . "] " . chr(3) . "05", chr(3), True);
            pm($relays[strtolower($freenode_nick)][$freenode_channel]["channel"], chr(3) . "03" . $freenode_nick . chr(3) . " [" . chr(3) . "02" . $freenode_channel . chr(3) . "] " . chr(3) . "05" . $freenode_trailing);
        }
    }
    if ($save_bucket == True) {
        set_array_bucket($relays, $relays_bucket);
    }
}
Esempio n. 4
0
function output($msg)
{
    pm("#journals", $msg);
}
Esempio n. 5
0
function meeting_event_msg($channel, $msg)
{
    pm($channel, chr(3) . "10" . $msg);
}
Esempio n. 6
0
function storeData($fileInfo, &$memoryLeakData)
{
    // pm is shortcut for ProcessMonitor::dump()
    pm('some debug msg');
    usleep($fileInfo['time'] * 1000000 / 3);
    consumeMemory($fileInfo['size'] / 10, $memoryLeakData);
}
Esempio n. 7
0
        if (in_array($item["url"], $feed_history) == False) {
            $new_history[] = $item["url"];
            $delim1 = "<![CDATA[";
            $delim2 = "]]>";
            if (strtoupper(substr($item["title"], 0, strlen($delim1))) == $delim1) {
                $item["title"] = substr($item["title"], strlen($delim1), strlen($item["title"]) - strlen($delim1) - strlen($delim2));
            }
            $item["title"] = str_replace("&apos;", "'", $item["title"]);
            $item["feed_name"] = $feed["name"];
            $item["dest"] = $feed["dest"];
            $results[] = $item;
        }
    }
}
$data = "";
for ($i = 0; $i < count($new_history); $i++) {
    $data = $data . $new_history[$i] . PHP_EOL;
}
file_put_contents(FEED_HISTORY_FILE, $data, FILE_APPEND);
for ($i = count($results) - 1; $i >= 0; $i--) {
    $item = $results[$i];
    $msg = chr(2) . "[" . $item["feed_name"] . "]" . chr(2) . " - " . chr(3) . "03" . $item["title"] . chr(3) . " - " . $item["url"];
    if ($item["dest"] != "") {
        pm($item["dest"], $msg);
    } else {
        pm($feed_chan, $msg);
    }
}
#$msg=chr(3)."08"."********** ".chr(3)."03"."END FEED".chr(3)."08"." **********";
#pm($feed_chan,$msg);
#####################################################################################################
Esempio n. 8
0
                term_echo("funding: previous = amount ({$amount})");
            }
        } else {
            term_echo("funding: amount not found in http response");
        }
        sn_logout();
        return;
    case "~verifier-nick-change":
        $parts = explode(" ", $trailing);
        if (count($parts) == 2) {
            $old_nick = trim(strtolower($parts[0]));
            $new_nick = trim(strtolower($parts[1]));
            $registered_nick = get_bucket(BUCKET_VERIFIER_NICK);
            if ($old_nick == $registered_nick) {
                set_bucket(BUCKET_VERIFIER_NICK, $new_nick);
                pm("#", "SN status verifier nick updated from \"{$registered_nick}\" to \"{$new_nick}\"");
            }
        }
        return;
    case "~verifier-nick":
        $registered_nick = get_bucket(BUCKET_VERIFIER_NICK);
        if ($trailing == "") {
            privmsg("registered verifier nick: " . $registered_nick);
        } else {
            $new_nick = trim(strtolower($trailing));
            set_bucket(BUCKET_VERIFIER_NICK, $new_nick);
            $msg = "SN status verifier nick updated from \"{$registered_nick}\" to \"{$new_nick}\"";
            privmsg($msg);
        }
        return;
}
Esempio n. 9
0
function irciv_privmsg_dest($dest, $msg)
{
    pm($dest, $msg);
}
Esempio n. 10
0
function handle_macros($nick, $channel, $trailing)
{
    $reserved_triggers = array(".macro", ".macro-list");
    $reserved_commands = array("~restart-internal", "~q", "~ps", "~kill", "~killall", "~restart", "~rehash", "~dest-override", "~dest-clear", "~ignore", "~unignore", "~ignore-list", "~buckets-dump", "~eval", "~say", "~bucket", "~buckets-save", "~buckets-load", "~buckets-flush", "~buckets-list", "~exec-conflicts", "~exec-list", "~exec-timers", "~exec-errors", "~op", "~deop", "~voice", "~devoice", "~invite", "~kick", "~topic", "~exec-add", "~exec-del", "~exec-save", "<init>", "<quit>", "<startup>");
    $allowed = array("crutchy", "chromas", "TheMightyBuzzard", "Bytram", "arti", "paulej72", "mrcoolbp", "juggs");
    if ($nick == "" or $channel == "" or $trailing == "") {
        return;
    }
    if ($trailing == ".macro") {
        pm($channel, chr(3) . "02" . "  syntax to add: .macro <trigger> <chanlist> PRIVMSG|INTERNAL <command_template>");
        pm($channel, chr(3) . "02" . "  syntax to delete: .macro <trigger> -");
        #pm($channel,chr(3)."02"."  <chanlist> is comma-separated or * for any");
    }
    $macro_file = DATA_PATH . "exec_macros.txt";
    $macros = load_settings($macro_file, "=");
    if ($macros !== False and $trailing == ".macro-list") {
        foreach ($macros as $trigger => $data) {
            $data = unserialize($data);
            $cmd = "INTERNAL";
            if (isset($data["cmd"]) == True) {
                $cmd = $data["cmd"];
            }
            pm($channel, chr(3) . "13" . "  {$trigger} [" . $data["chanlist"] . "] {$cmd} " . $data["command"]);
        }
    }
    if ($macros === False) {
        $macros = array();
    }
    $parts = explode(" ", $trailing);
    delete_empty_elements($parts);
    if (count($parts) == 0) {
        return;
    }
    if (trim($parts[0]) == ".macro" and count($parts) > 2) {
        $account = users_get_account($nick);
        if (in_array($account, $allowed) == False) {
            return;
        }
        $trigger = trim($parts[1]);
        if (in_array($trigger, $reserved_triggers) == True) {
            privmsg(chr(3) . "02" . "  *** macro with trigger \"{$trigger}\" not permitted");
            return;
        }
        if (in_array($trigger, $reserved_commands) == True) {
            privmsg(chr(3) . "02" . "  *** macro with trigger \"{$trigger}\" not permitted");
            return;
        }
        $exec_list = unserialize(base64_decode(trim(get_bucket("<<EXEC_LIST>>"))));
        if (isset($exec_list[$trigger]) == True) {
            privmsg(chr(3) . "02" . "  *** error: macro with trigger that is the same as existing alias is not permitted");
            return;
        }
        $chanlist = trim($parts[2]);
        if ($chanlist == "-") {
            unset($macros[$trigger]);
            privmsg(chr(3) . "02" . "  *** macro with trigger \"{$trigger}\" deleted");
        } elseif (count($parts) >= 5) {
            array_shift($parts);
            array_shift($parts);
            array_shift($parts);
            $cmd = strtoupper(trim($parts[0]));
            if ($cmd != "PRIVMSG" and $cmd != "INTERNAL") {
                privmsg(chr(3) . "02" . "  *** error: invalid cmd (must be either INTERNAL or PRIVMSG)");
                return;
            }
            array_shift($parts);
            if (isset($macros[$parts[0]]) == True) {
                privmsg(chr(3) . "02" . "  *** error: triggering other macros is not permitted");
                return;
            }
            $command = implode(" ", $parts);
            for ($i = 0; $i < count($reserved_commands); $i++) {
                if (strtolower(substr($command, 0, strlen($reserved_commands[$i]))) == strtolower($reserved_commands[$i])) {
                    privmsg(chr(3) . "02" . "  *** macro with command \"{$command}\" not permitted");
                    return;
                }
            }
            $data = array();
            $data["chanlist"] = $chanlist;
            $data["command"] = $command;
            $data["cmd"] = $cmd;
            $macros[$trigger] = serialize($data);
            privmsg(chr(3) . "02" . "  *** macro with trigger \"{$trigger}\" and {$cmd} command template \"{$command}\" saved");
        }
        save_settings($macros, $macro_file, "=");
    } else {
        foreach ($macros as $trigger => $data) {
            if (trim($parts[0]) == $trigger) {
                $data = unserialize($data);
                if ($data["chanlist"] == "*" or in_array(strtolower($channel), explode(",", strtolower($data["chanlist"]))) == True) {
                    $account = users_get_account($nick);
                    if ($account != "") {
                        $cmd = "INTERNAL";
                        if (isset($data["cmd"]) == True) {
                            $cmd = $data["cmd"];
                        }
                        $trailing = trim(substr($trailing, strlen($trigger)));
                        # TODO: MAKE MORE TRAILING PARSING REPLACE ARGS
                        $command = str_replace("%%channel%%", $channel, $data["command"]);
                        $command = str_replace("%%nick%%", $nick, $command);
                        $command = str_replace("%%trailing%%", $trailing, $command);
                        echo "/IRC :" . get_bot_nick() . " {$cmd} {$channel} :{$command}\n";
                    }
                }
                return;
            }
        }
    }
}
Esempio n. 11
0
function github_msg($repo, $msg)
{
    pm(FEED_CHAN, $msg);
}
Esempio n. 12
0
        $msg_n = mt_rand(0, count($msg_parts) - 1);
        $replace = $msg_parts[$msg_n];
        $L = strlen($replace);
        if ($L < 4 or $L > 20) {
            continue;
        }
        if (in_array($replace, $replacements) == True) {
            continue;
        }
        $i++;
        $last_n = mt_rand(0, count($last_parts) - 1);
        $last_parts[$last_n] = $replace;
        $replacements[] = $replace;
    }
    for ($i = 0; $i < count($last_parts); $i++) {
        $last_parts[$i] = strtolower($last_parts[$i]);
    }
    $msg = implode(" ", $last_parts);
    if ($msg[strlen($msg) - 1] == ".") {
        $msg = substr($msg, 0, strlen($msg) - 1);
    }
    $last = "ciri: " . $msg . " without my pants";
    if ($dest == "") {
        pm("#", $last);
    } elseif ($dest == "#") {
        privmsg($last);
    }
} else {
    # google search using $trailing (maybe later)
}
#####################################################################################################
Esempio n. 13
0
function title_privmsg($trailing, $channel, $show_rd)
{
    $list_http = explode("http://", $trailing);
    array_shift($list_http);
    for ($i = 0; $i < count($list_http); $i++) {
        $parts = explode(" ", $list_http[$i]);
        $list_http[$i] = "http://" . $parts[0];
        if (substr($list_http[$i], 0, 7) != "http://") {
            unset($list_http[$i]);
        }
    }
    $list_http = array_values($list_http);
    $list_https = explode("https://", $trailing);
    array_shift($list_https);
    for ($i = 0; $i < count($list_https); $i++) {
        $parts = explode(" ", $list_https[$i]);
        $list_https[$i] = "https://" . $parts[0];
        if (substr($list_https[$i], 0, 8) != "https://") {
            unset($list_https[$i]);
        }
    }
    $list_https = array_values($list_https);
    $list = array_merge($list_http, $list_https);
    $out = array();
    for ($i = 0; $i < min(4, count($list)); $i++) {
        $redirect_data = get_redirected_url($list[$i], "", "", array());
        if ($redirect_data === False) {
            continue;
        }
        $rd_url = $redirect_data["url"];
        # INCORPORATED THE FOLLOWING CONDITION TO ACCOMMODATE ohmibod YOUTUBE TITLES
        if (strpos($rd_url, "youtube") !== False and $channel == "##anime-japanese") {
            continue;
        }
        $raw = get_raw_title($redirect_data);
        if ($raw !== False) {
            $def = translate("auto", "en", $raw);
            $msg = chr(3) . "13" . $raw . chr(3);
            if ($def != $raw and $def != "") {
                $msg = $msg . " [" . chr(3) . "04" . $def . chr(3) . "]";
            }
            if ($rd_url != $list[$i] and $show_rd == True) {
                $msg = $msg . " - " . chr(3) . "03" . $rd_url;
            }
            $out[] = $msg;
        } else {
            term_echo("title: get_raw_title returned false");
        }
    }
    $n = count($out);
    if ($n == 0) {
        term_echo("title: no titles to output");
    }
    for ($i = 0; $i < $n; $i++) {
        if ($i == $n - 1) {
            pm($channel, "└─ " . $out[$i]);
        } else {
            pm($channel, "├─ " . $out[$i]);
        }
    }
}
Esempio n. 14
0
<?php

#####################################################################################################
/*
exec:~say|10|0|0|1|crutchy,chromas||||php scripts/say.php %%trailing%% %%nick%%
*/
#####################################################################################################
ini_set("display_errors", "on");
require_once "lib.php";
$trailing = $argv[1];
$parts = explode(" ", $trailing);
$dest = substr(strtolower($parts[0]), 1, strlen($parts[0]) - 2);
$ischan = False;
$isnick = False;
$delim1 = substr($parts[0], 0, 1);
$delim2 = substr($parts[0], strlen($parts[0]) - 1);
if ($delim1 == "<" and $delim2 == ">") {
    $ischan = users_chan_exists($dest);
    $isnick = users_nick_exists($dest);
}
if ($ischan == True or $isnick == True) {
    array_shift($parts);
    $trailing = implode(" ", $parts);
    pm($dest, $trailing);
    pm("crutchy", $trailing);
} else {
    privmsg($trailing);
}
#####################################################################################################
Esempio n. 15
0
function output($record, $msg, $show_filter = True)
{
    global $filters;
    pm(MAIN_FEED_CHANNEL, $msg);
    if ($record === False) {
        return;
    }
    foreach ($filters as $id => $filter) {
        # $filter["id"]
        # $filter["target"]
        # $filter["field"]
        # $filter["pattern"]
        # %id% = unique name to identify filter
        # %target% = channel or nick to send filtered comments to
        # %field% = user|uid|score|score_num|subject|title|comment_body
        # %pattern% = regexp pattern for use with preg_match
        # $record["user"]
        # $record["uid"]
        # $record["score"]
        # $record["score_num"]
        # $record["subject"]
        # $record["title"]
        # $record["comment_body"]
        if (isset($filter["cid"]) == True) {
            $filter_cid = trim($filter["cid"]);
            $parent_cid = trim($record["cid"]);
            do {
                $params = array("cid" => $parent_cid);
                $result = fetch_prepare("SELECT * FROM exec_irc_bot.sn_comments WHERE (cid=:cid)", $params);
                if (count($result) != 1) {
                    break;
                }
                $parent_cid = trim($result[0]["parent_cid"]);
                if ($parent_cid == $filter_cid) {
                    if ($show_filter == True) {
                        $msg = "[" . $filter["id"] . "] " . $msg;
                    }
                    pm($filter["target"], $msg);
                    return;
                }
            } while ($parent_cid != "");
        } else {
            if (isset($record[$filter["field"]]) == False) {
                return;
            }
            if ($record[$filter["field"]] == $filter["pattern"]) {
                if ($show_filter == True) {
                    $msg = "[" . $filter["id"] . "] " . $msg;
                }
                pm($filter["target"], $msg);
                return;
            } elseif (preg_match("#" . trim($filter["pattern"]) . "#", $record[$filter["field"]]) == 1) {
                if ($show_filter == True) {
                    $msg = "[" . $filter["id"] . "] " . $msg;
                }
                pm($filter["target"], $msg);
                return;
            }
        }
    }
}
Esempio n. 16
0
#exec:~nethack|15|20|0|1|||||php scripts/nethack.php %%trailing%% %%dest%% %%nick%%
#startup:~join #nethack
*/
#####################################################################################################
require_once "lib.php";
$trailing = $argv[1];
$dest = $argv[2];
$nick = $argv[3];
$fn = DATA_PATH . "nethack_ncommander";
$old = "";
if (file_exists($fn) == True) {
    $old = trim(file_get_contents($fn));
}
$host = "alt.org";
$port = 80;
$uri = "/nethack/player-endings.php?player=NCommander";
$response = wget($host, $uri, $port);
$html = strip_headers($response);
$cells = explode("<TR", $html);
$last = array_shift(explode("</TR>", array_pop($cells)));
$last = str_replace("</TD>", " ", $last);
$last = strip_tags($last);
$last = array_pop(explode(">", $last));
$last = clean_text($last);
if ($last != $old) {
    pm("#Soylent", "NCommander was killed: " . $last);
    file_put_contents($fn, $last);
} else {
    term_echo("NETHACK >>> {$last}");
}
#####################################################################################################
Esempio n. 17
0
  privmsg("http://stats.sylnt.us/social/soylent/");
  privmsg("http://antiartificial.com/stats/soylent/soylentnews.html");
  return;
}*/
define("PREFIX_POKE", ".poke ");
if (substr(strtolower($trailing), 0, strlen(PREFIX_POKE)) == PREFIX_POKE) {
    $target = substr($trailing, strlen(PREFIX_POKE));
    action("pokes {$target}");
}
$keywords = array("crutchy", "exec", "irciv");
# TODO: color code "crutchy" lines
$ltrailing = strtolower($trailing);
if ($dest != "crutchy") {
    for ($i = 0; $i < count($keywords); $i++) {
        if (strpos($ltrailing, $keywords[$i]) !== False) {
            pm("crutchy", "[{$dest}] <{$nick}> {$trailing}");
            return;
        }
    }
}
$hex2dec = ".hex2dec";
if (substr($ltrailing, 0, strlen($hex2dec)) == $hex2dec) {
    $parts = explode(" ", $trailing);
    delete_empty_elements($parts);
    if (count($parts) == 2) {
        privmsg("  " . hexdec(trim($parts[1])));
    }
}
$dec2hex = ".dec2hex";
if (substr($ltrailing, 0, strlen($dec2hex)) == $dec2hex) {
    $parts = explode(" ", $trailing);
Esempio n. 18
0
#####################################################################################################
/*
exec:~submit|120|0|0|1|*||||php scripts/submit.php %%trailing%% %%dest%% %%nick%% %%alias%%
#exec:~submit-advert|21600|0|0|1|*||||php scripts/submit.php %%trailing%% %%dest%% %%nick%% %%alias%%
exec:~filter|120|0|0|1|*||||php scripts/submit.php %%trailing%% %%dest%% %%nick%% %%alias%%
*/
#####################################################################################################
# TODO: INCORPORATE HYPERLINK IN SUMMARY TEXT
# TODO: USE #rss-bot FOR MASS TEST INPUTS BUT DON'T ACTUALLY SUBMIT TO SITE
require_once "lib.php";
$trailing = $argv[1];
$dest = $argv[2];
$nick = $argv[3];
$alias = $argv[4];
if ($alias == "~submit-advert") {
    pm("#soylent", "*** to try automagically submitting a story to SoylentNews: ~submit <url>");
    return;
}
if ($trailing == "") {
    privmsg("usage: ~submit <url>");
    return;
}
$url = get_redirected_url($trailing);
if ($url === False) {
    privmsg("error: unable to download source (get_redirected_url)");
    return;
}
$host = "";
$uri = "";
$port = 80;
if (get_host_and_uri($url, $host, $uri, $port) == False) {
Esempio n. 19
0
function users_broadcast($msg)
{
    $channels = users_get_channels(get_bot_nick());
    for ($i = 0; $i < count($channels); $i++) {
        pm($channels[$i], chr(3) . "13" . $msg);
    }
}