Eggdrop TCL Искусственный интеллект за ограниченное время - PullRequest
1 голос
/ 26 февраля 2020

Я хочу, чтобы Eggdrop отвечал пользователям, которые присоединились к каналу за последние 30 минут. Все остальные пользователи, которые были на канале более 30 минут, должны игнорироваться.

set canalativo "#testes"

bind pubm - "*regist*canal*" pub:regchan

proc pub:regchan { nick uhost handle chan arg } {
global canalativo

if {[string match -nocase "$canalativo" $chan]} {

putserv "PRIVMSG $chan :$nick para registar um canal escreve o comando: /ChanServ register #CANAL DESCRICAO-DO-CANAL" } 
 }

1 Ответ

0 голосов
/ 04 марта 2020

Вы можете хранить массив, содержащий пользователя и время его соединения. Что-то вроде (не проверено):

set canalativo "#testes"
array set joinedUsers {}

bind pubm - "*regist*canal*" pub:regchan
bind join - "*!*@*" pub:joinchan

proc pub:regchan { nick uhost handle chan arg } {
    global canalativo joinedUsers

    # Check if - this is the correct channel
    #          - the user is in the array of joined users
    #          - the time the user joined is 1800 seconds ago or less
    if {
        [string match -nocase "$canalativo" $chan] && 
        [info exists joinedUsers($nick)] && 
        [clock seconds]-$joinedUsers($nick) <= 1800
    } {
        putserv "PRIVMSG $chan :$nick para registar um canal escreve o comando: /ChanServ register #CANAL DESCRICAO-DO-CANAL"
    }

    # Remove the user from the array if it is there
    catch {unset joinedUsers($nick)}
}

proc pub:joinchan { nick uhost handle chan } {
    global joinedUsers

    # Add the user and the time they joined to the array
    set joinedUsers($nick) [clock seconds]
}

Это просто основа c. Возможно, вы захотите добавить проверки для таких вещей, как изменения никнеймов (например, рассказать им о группировании своих ников под одной учетной записью) или присоединиться (из-за отсоединения / netsplits) среди других вещей. Также вы можете не захотеть, чтобы бот сказал им об этом, если они уже зарегистрированы.

...