📄 idirc.pas
字号:
end;
function TIdIRC.IsOp(ANickname: String): Boolean;
begin
//Result := (Length(ANickname) > 0) and (ANickname[1] = '@');
Result := False;
if Length(ANickname) > 0 then begin
if ANickname[1] = '@' then begin
Result := True;
end;
end;
end;
function TIdIRC.IsVoice(ANickname: String): Boolean;
begin
//Result := (Length(ANickname) > 0) and (ANickname[length(Nickname)] = '+');
Result := False;
if Length(ANickname) > 0 then begin
if ANickname[length(Nickname)] = '+' then begin
Result := True;
end;
end;
end;
procedure TIdIRC.Say(ATarget, AMsg: String);
begin
Raw(Format('PRIVMSG %s :%s', [ATarget, AMsg])); {do not localize}
end;
procedure TIdIRC.Notice(ATarget, AMsg: String);
begin
Raw(Format('NOTICE %s :%s', [ATarget, AMsg])); {do not localize}
end;
procedure TIdIRC.Action(ATarget, AMsg: String);
begin
CTCPQuery(ATarget, 'ACTION', AMsg); {do not localize}
end;
procedure TIdIRC.CTCPQuery(ATarget, ACommand, AParameters: String);
begin
Say(ATarget, Format(#1'%s %s'#1, [Uppercase(ACommand), AParameters])); {do not localize}
end;
procedure TIdIRC.CTCPReply(ATarget, ACTCP, AReply: String);
begin
Notice(ATarget, Format(#1'%s %s'#1, [ACTCP, AReply])); {do not localize}
end;
procedure TIdIRC.Join(AChannel: String; const AKey: String = '');
begin
if IsChannel(AChannel) then
begin
if AKey <> '' then
begin
Raw(Format('JOIN %s %s', [AChannel, AKey])) {do not localize}
end
else
Raw(Format('JOIN %s', [AChannel])); {do not localize}
end;
end;
procedure TIdIRC.Part(AChannel: String; const AReason: String = '');
begin
if IsChannel(AChannel) then
begin
if AReason <> '' then
begin
Raw(Format('PART %s :%s', [AChannel, AReason])) {do not localize}
end
else
Raw(Format('PART %s', [AChannel])); {do not localize}
end;
end;
procedure TIdIRC.Kick(AChannel, ANickname, AReason: String);
begin
if IsChannel(AChannel) then
begin
Raw(Format('KICK %s %s :%s', [AChannel, ANickname, AReason])); {do not localize}
end;
end;
procedure TIdIRC.SetChannelMode(AChannel, AMode: String; const AParams: String = '');
begin
if IsChannel(AChannel) then
begin
if AParams = '' then
begin
Raw(Format('MODE %s %s', [AChannel, AMode])); {do not localize}
end
else
Raw(Format('MODE %s %s %s', [AChannel, AMode, AParams])); {do not localize}
end;
end;
procedure TIdIRC.SetUserMode(ANickname, AMode: String);
begin
Raw(Format('MODE %s %s', [ANickname, AMode])); {do not localize}
end;
procedure TIdIRC.GetChannelTopic(AChannel: String);
begin
if IsChannel(AChannel) then
begin
Raw(Format('TOPIC %s', [AChannel])); {do not localize}
end;
end;
procedure TIdIRC.SetChannelTopic(AChannel, ATopic: String);
begin
if IsChannel(AChannel) then
begin
Raw(Format('TOPIC %s :%s', [AChannel, ATopic])); {do not localize}
end;
end;
procedure TIdIRC.SetAway(AMsg: String);
begin
if AMsg <> '' then
begin
Raw(Format('AWAY %s', [AMsg])); {do not localize}
end
else
Raw('AWAY'); {do not localize}
end;
procedure TIdIRC.Op(AChannel, ANickname: String);
begin
SetChannelMode(AChannel, '+o', ANickname); {do not localize}
end;
procedure TIdIRC.Deop(AChannel, ANickname: String);
begin
SetChannelMode(AChannel, '-o', ANickname); {do not localize}
end;
procedure TIdIRC.Voice(AChannel, ANickname: String);
begin
SetChannelMode(AChannel, '+v', ANickname); {do not localize}
end;
procedure TIdIRC.Devoice(AChannel, ANickname: String);
begin
SetChannelMode(AChannel, '-v', ANickname); {do not localize}
end;
procedure TIdIRC.Ban(AChannel, AHostmask: String);
begin
SetChannelMode(AChannel, '+b', AHostmask); {do not localize}
end;
procedure TIdIRC.Unban(AChannel, AHostmask: String);
begin
SetChannelMode(AChannel, '-b', AHostmask); {do not localize}
end;
procedure TIdIRC.RegisterService(const ANickname, ADistribution, AInfo: String;
AType: Integer);
begin
Raw(Format('SERVICE %s %s %s %s %s :%s', {do not localize}
[ANickname, '*', ADistribution, AType, '0', AInfo]));
end;
procedure TIdIRC.ListChannelNicknames(AChannel: String; ATarget: String = '');
begin
if IsChannel(AChannel) then
begin
if ATarget <> '' then
begin
Raw(Format('NAMES %s %s', [AChannel, ATarget])); {do not localize}
end
else
Raw(Format('NAMES %s', [AChannel])); {do not localize}
end;
end;
procedure TIdIRC.ListChannel(AChannel: String; ATarget: String = '');
begin
if IsChannel(AChannel) then
begin
if ATarget <> '' then
begin
Raw(Format('LIST %s %s', [AChannel, ATarget])); {do not localize}
end
else
Raw(Format('LIST %s', [AChannel])); {do not localize}
end;
end;
procedure TIdIRC.Invite(ANickname, AChannel: String);
begin
if IsChannel(AChannel) then
begin
Raw(Format('INVITE %s %s', [ANickname, AChannel])); {do not localize}
end;
end;
procedure TIdIRC.GetMessageOfTheDay(ATarget: String = '');
begin
if ATarget <> '' then
begin
Raw(Format('MOTD %s', [ATarget])); {do not localize}
end
else
Raw('MOTD'); {do not localize}
end;
procedure TIdIRC.GetNetworkStatus(AHostMask: String = ''; ATarget: String = '');
begin
if ((AHostMask = '') and (ATarget = '')) then
begin
Raw('LUSERS'); {do not localize}
end
else if AHostMask = '' then
begin
Raw(Format('LUSERS %s', [ATarget])); {do not localize}
end
else if ATarget = '' then
begin
Raw(Format('LUSERS %s', [AHostMask])); {do not localize}
end
else
Raw(Format('LUSERS %s %s', [AHostMask, ATarget])); {do not localize}
end;
procedure TIdIRC.GetServerVersion(ATarget: String = '');
begin
if ATarget = '' then
begin
Raw('VERSION'); {do not localize}
end
else
Raw(Format('VERSION %s', [ATarget])); {do not localize}
end;
procedure TIdIRC.GetServerStatus(AQuery: TIdIRCStat; ATarget: String = '');
begin
if ATarget <> '' then
begin
Raw(Format('STATS %s %s', [IdIRCStatChars[ord(AQuery)], ATarget])); {do not localize}
end
else
Raw(Format('STATS %s', [IdIRCStatChars[ord(AQuery)]])); {do not localize}
end;
procedure TIdIRC.ListKnownServerNames(ARemoteHost: String = ''; AHostMask: String = '');
begin
if ((ARemoteHost = '') and (AHostMask = '')) then
begin
Raw('LINKS'); {do not localize}
end
else if ARemoteHost = '' then
begin
Raw(Format('LINKS %s', [AHostMask])); {do not localize}
end
else
Raw(Format('LINKS %s', [ARemoteHost])); {do not localize}
end;
procedure TIdIRC.QueryServerTime(ATarget: String = '');
begin
if ATarget <> '' then
begin
Raw(Format('TIME %s', [ATarget])); {do not localize}
end
else
Raw('TIME'); {do not localize}
end;
procedure TIdIRC.RequestServerConnect(ATarget, AHost: String; APort: Integer;
ARemoteHost: String = '');
begin
if ARemoteHost <> '' then
begin
Raw(Format('CONNECT %s %s %d %s', [ATarget, AHost, APort, ARemoteHost])); {do not localize}
end
else
Raw(Format('CONNECT %s %s %d', [ATarget, AHost, APort])); {do not localize}
end;
procedure TIdIRC.TraceServer(ATarget: String = '');
begin
if ATarget <> '' then
begin
Raw(Format('TRACE %s', [ATarget])); {do not localize}
end
else
Raw('TRACE'); {do not localize}
end;
procedure TIdIRC.GetAdminInfo(ATarget: String = '');
begin
if ATarget <> '' then
begin
Raw(Format('ADMIN %s', [ATarget])); {do not localize}
end
else
Raw('ADMIN'); {do not localize}
end;
procedure TIdIRC.GetServerInfo(ATarget: String = '');
begin
if ATarget <> '' then
begin
Raw(Format('INFO %s', [ATarget])); {do not localize}
end
else
Raw('INFO'); {do not localize}
end;
procedure TIdIRC.ListNetworkServices(AHostMask: String; AType: String = '');
begin
if AType <> '' then
begin
Raw(Format('SERVLIST %s %s', [AHostMask, AType])); {do not localize}
end
else
Raw(Format('SERVLIST %s', [AHostMask])); {do not localize}
end;
procedure TIdIRC.QueryService(AServiceName, AMessage: String);
begin
Raw(Format('SQUERY %s %s', [AServiceName, AMessage])); {do not localize}
end;
procedure TIdIRC.Who(AMask: String; AOnlyAdmins: Boolean);
begin
if AOnlyAdmins then
begin
Raw(Format('WHO %s o', [AMask])); {do not localize}
end
else
Raw(Format('WHO %s', [AMask])); {do not localize}
end;
procedure TIdIRC.WhoIs(AMask: String; ATarget: String = '');
begin
if ATarget <> '' then
begin
Raw(Format('WHOIS %s %s', [AMask, ATarget])); {do not localize}
end
else
Raw(Format('WHOIS %s', [AMask])); {do not localize}
end;
procedure TIdIRC.WhoWas(ANickname: String; ACount: Integer = -1; ATarget: String = '');
begin
if ((ATarget = '') and (ACount = -1)) then
begin
Raw(Format('WHOWAS %s', [ANickname])); {do not localize}
end
else if ATarget = '' then
begin
Raw(Format('WHOWAS %s %d', [ANickname, ACount])); {do not localize}
end
else if ACount = -1 then
begin
raw(Format('WHOWAS %s %s', [ANickname, ATarget])); {do not localize}
end;
end;
procedure TIdIRC.Kill(ANickname, AComment: String);
begin
Raw(Format('KILL %s %s', [ANickname, AComment])); {do not localize}
end;
procedure TIdIRC.Ping(AServer1: String; AServer2: String = '');
begin
if AServer2 <> '' then
begin
Raw(Format('PING %s %s', [AServer1, AServer2])); {do not localize}
end
else
Raw(Format('PING %s', [AServer1])); {do not localize}
end;
procedure TIdIRC.Pong(AServer1: String; AServer2: String = '');
begin
if AServer2 <> '' then
begin
Raw(Format('PONG %s %s', [AServer1, AServer2])); {do not localize}
end
else
Raw(Format('PONG %s', [AServer1])); {do not localize}
end;
procedure TIdIRC.Error(AMessage: String);
begin
Raw(Format('ERROR %s', [AMessage])); {do not localize}
end;
procedure TIdIRC.ReHash;
begin
Raw('REHASH'); {do not localize}
end;
procedure TIdIRC.Die;
begin
Raw('DIE'); {do not localize}
end;
procedure TIdIRC.Restart;
begin
Raw('RESTART'); {do not localize}
end;
procedure TIdIRC.Summon(ANickname: String; ATarget: String = ''; AChannel: String = '');
begin
if ((ATarget = '') and (AChannel = '')) then
begin
Raw(Format('SUMMON %s', [ANickname])); {do not localize}
end
else if ATarget = '' then
begin
if IsChannel(AChannel) then
begin
Raw(Format('SUMMON %s', [AChannel])); {do not localize}
end;
end
else
Raw(Format('SUMMON %s', [ANickname])); {do not localize}
end;
procedure TIdIRC.ListServerUsers(ATarget: String = '');
begin
if ATarget <> '' then
begin
Raw(Format('USERS %s', [ATarget])); {do not localize}
end
else
Raw('USERS'); {do not localize}
end;
procedure TIdIRC.SayWALLOPS(AMessage: String);
begin
Raw(Format('WALLOPS %s', [AMessage])); {do not localize}
end;
procedure TIdIRC.GetUserInfo(ANickname: String);
begin
Raw(Format('USERHOST %s', [ANickname])); {do not localize}
end;
procedure TIdIRC.IsOnIRC(ANickname: String);
begin
Raw(Format('ISON %s', [ANickname])); {do not localize}
end;
procedure TIdIRC.BecomeOp(ANickname, APassword: String);
begin
Raw(Format('OPER %s %s', [ANickname, APassword])); {do not localize}
end;
procedure TIdIRC.SQuit(AHost, AComment: String);
begin
Raw(Format('SQUIT %s %s', [AHost, AComment])); {do not localize}
end;
procedure TIdIRC.SetChannelLimit(AChannel: String; ALimit: Integer);
begin
SetChannelMode(AChannel, '+l', Format('%s', [ALimit])); {do not localize}
end;
procedure TIdIRC.SetChannelKey(AChannel, AKey: String);
begin
SetChannelMode(AChannel, '+k', AKey); {do not localize}
end;
procedure TIdIRC.SetIOHandler(AValue: TIdIOHandler);
begin
inherited;
//we do it this way so that if a user is using a custom value <> default, the port
//is not set when the IOHandler is changed.
if (IOHandler is TIdSSLIOHandlerSocketBase) then
begin
if PORT = IdPORT_IRC then
begin
Port := IdPORT_IRCS;
end;
end
else
begin
if PORT = IdPORT_IRCS then
begin
Port := IdPORT_IRC;
end;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -