快捷搜索:  as  2018  FtCWSyGV  С˵  test  xxx  Ψһ  w3viyKQx

澳门新葡亰黑平台_龟发之家论坛



您赓续想要与您的 PHP 法度榜样进行交谈?您痴迷于即时消息?假如是这样,我可以为您供给一个模块!该模块存在于 PHP 扩展及利用资料库(PHP Application and Extension Repository,PEAR)中,用于将 PHP 利用法度榜样连接到 Internet 中继谈天(Internet Relay Chat,IRC)办事器,并对办事器的消息作出相应。实际上,PEAR 模块是将 PHP 利用法度榜样变成 bot。

谈天机械人(bot)的意义在于,您能够经由过程常常应用的机制 —— 即时消息 —— 与其进行通信。假如您老是在谈天室中,那么现在不必要脱离谈天室就可以获得当地的气象信息。本文向您展示若何在 PHP 中创建一个 IRC 谈天机械人(bot),用于以向您见告按邮政编码查询的气象环境。

IRC 根基

要是您不认识 IRC 系统,可以从这里入门。IRC 系统由两部分组成:办事器和客户机。办事器创建数个虚拟信道供用户登录并相互通信。信道被给予一个认识的名称,以与对话的主题匹配。

经由过程指定主机名称、端口号和所需的又名,将 IRC 客户机软件连接到办事器。客户机在成功地连接到办事器之后,就能够加入任何数目的信道并开始发送和接管消息。要发送消息,只需在一个文本框中输入消息,并按 Enter 键,就跟任何其他的即时消息客户机一样。然后客户机发送消息到办事器,办事器然后将消息广播到加入该信道的所有其他的客户机。IRC 客户机软件对所有的操作系统及便携设备可用。

谈天机械人(bot)可以像其他的澳门新葡亰黑平台客户机那样运行。它们连接到办事器,然后加入一个或多个信道。一样平常而言,谈天机械人(bot) 不会自立地发出消息。更确切地说,它们侦听信道中来自用户的相符特定款式的消息。谈天机械人(bot)发出消息以相应这些特定款式的哀求。

本文中 谈天机械人(bot)查找的用户消息以 weather 开始,后跟邮政编码。(然则一开始,我仅查找 weather 以使例子简单。)

安装 PEAR 模块

从安装几个 PEAR 模块开始。PEAR 是用户供给的模块组成的资料库。这些模块涵盖了读写不合类型的文件、应用不合的 Web 办事、科学模块以及更多内容。

PEAR 的一个主要功能是,站点为 Microsoft® Windows®、Linux® 以及 Mac OS X 操作系统供给了脚本,使您能够经由过程谋略机的敕令行方便地安装 PEAR 模块。下面是我在 Windows 敕令提示窗口下的会话,经由过程该会话安装了 Net_SmartIRC 模块:

清单 1. Windows 敕令提澳门新葡亰黑平台示窗口下的会话

C: >pear install Net_SmartIRC

downloading Net_SmartIRC-1.0.0.tgz ...

Starting to download Net_SmartIRC-1.0.0.tgz (185,991 bytes)

........................................done: 185,991 bytes

install ok: Net_SmartIRC 1.0.0

安装 IRC 办事器

创建 IRC 谈天机械人(bot)的下一个步骤是设置谈天机械人(bot)能够登录的办事器。您可能已经使谈天机械人(bot) 登录到了一个公共办事器,然则我建议先安装一个本地办事器用于测试。

我选择运行 Windows 版本的 “beware ircd” 办事器(beware ircd 办事器还有一个 Linux 版本)。我查看了几台办事器,发明这一台是最轻易应用的。安装 beware ircd 办事器很简单,我将其安装在 C:ircd 目录下。从该目录下,我经由过程打开敕令提示符并键入如下敕令,运行该澳门新葡亰黑平台办事器:

C:ircd> bircd

留意:无需变动任何设置设置设备摆设摆设。

然则若何知道办事器是否正在运行呢?要进行验证,必要安装 IRC 客户机。

脚本中紧张的部分是 registerActionhandler 措施,该措施连接到具有特殊动作字符串和措施的 bot 工具。^weather 字符串是一个正则表达式,假如该字符串与进入 IRC 信道的任何文本类型相匹配,那么将调用动作处置惩罚器。

脚本中其他紧张的部分是 Weatherbot 类中的 weather 措施。该措施对气象哀求作出相应,并且传回(在此时)“Yeah, weather”。(在本文的结尾部分,它将奉告您气象状况。)

要启动脚本,我应用下列敕令在敕令提示符下运行它:

C:ircd> php ircbot.php

脚本注册到本地 IRC 办事器,并开始进行无限轮回。

图 3 展示了注册到办事器的 weather 谈天机械人(bot)。同时也展示了我在文本窗口中输入 weather 并按 Enter 键。

图 3. 与 weather 谈天机械人(bot)进行交谈

Weather 谈天机械人(bot)接着能够以固定的字符串 Yeah, weather 作出相应。

这是一个好的开始。现在,若何得到气象状况呢?

得到气象状况

要得到气象状况,将应用 Weather Web 办事 PEAR 模块。清单 3 展示了该模块,我对该模块进行了改动以供给我所在地区的气象状况。

清单 3. 申报气象状况的 weather 谈天机械人(bot)

service( "Weatherdotcom" );

class weatherbot

{

function weather(&$irc, &$data)

{

global $wdc;

$irc->message(SMARTIRC_TYPE_CHANNEL, $data->channel,

'Yeah, weather');

$fc = $wdc->getForecast( 94587, 1 );

foreach( $fc['days'] as $day )

{

$irc->message(SMARTIRC_TYPE_CHANNEL, $data->channel,

"Condition: ".$day['day'][ 'condition' ] );

$irc->message(SMARTIRC_TYPE_CHANNEL, $data->channel,

"High: ".$day[ 'temperatureHigh' ] );

$irc->message(SMARTIRC_TYPE_CHANNEL, $data->channel,

"Low: ".$day[ 'temperatureLow' ] );

$irc->message(SMARTIRC_TYPE_CHANNEL, $data->channel,

"Wind: ".$day['day'][ 'wind' ] );

$irc->message(SMARTIRC_TYPE_CHANNEL, $data->channel,

"Wind Degrees: ".$day['day'][ 'windDegrees' ] );

$irc->message(SMARTIRC_TYPE_CHANNEL, $data->channel,

"Wind Direction: ".$day['day'][ 'windDirection' ] );

$irc->message(SMARTIRC_TYPE_CHANNEL, $data->channel,

"Precipitation: ".$day['day'][ 'precipitation' ] );

$irc->message(SMARTIRC_T澳门新葡亰黑平台YPE_CHANNEL, 澳门新葡亰黑平台$data->channel,

"Humidity: ".$day['day'][ 'humidity' ] );

}

}

}

$host = "localhost";

$port = 6667;

$nick = "weather";

$chan = "#weather";

$bot = &new weatherbot( );

$irc = &new Net_SmartIRC( );

$irc->setUseSockets( TRUE );

$irc->registerActionhandler( SMARTIRC_TYPE_CHANNEL,

'^weather', $bot, 'weather' );

$irc->connect( $host, $port );

$irc->login( $nick, 'Weather bot', 0, $nick );

$irc->join( array( $chan ) );

$irc->listen( );

$irc->disconnect( );

?>

您可能还会对下面的文章感兴趣: