Annonce de news ...

Résolu
DragoonMaster Messages postés 60 Date d'inscription dimanche 15 juin 2003 Statut Membre Dernière intervention 16 mars 2009 - 10 déc. 2005 à 14:54
fjxokt Messages postés 840 Date d'inscription vendredi 28 janvier 2005 Statut Membre Dernière intervention 25 février 2009 - 11 déc. 2005 à 16:11
Voila, j'aimerais faire un bot, qui annonce toutes les nouvelles news de mon site, sur mon chan .... Pour ce faire, j'ai trouvé differentes choses, mais n'étant pas scripteur, j'ai beaucoup de mal, parfois même pour comprendre les differents code...
Mon site : www.alsagamer.net gère ces news, via le forum invision, qui a ete adapté sur l'interface du site
C'est a dire, det qu'un post est posté ds la partie "news" du forum, elle se retrouve (la news) sur l'index du site (section news)
J'aimerais simplement que le bot, annonce la news quand elle sorte, avec, titre de la news, et lien de la news ....

[Mode 3eme degré : ON]
Si jamais c'etait "trop simple pour vous", il pourait en plus, annoncer les 3 dernieres news toutes les heures, et permettre avec une commande du type "!news" d'annoncer en pv ou en notice, les 3 dernieres news :)
[Mode 3eme degré : OFF]

19 réponses

fjxokt Messages postés 840 Date d'inscription vendredi 28 janvier 2005 Statut Membre Dernière intervention 25 février 2009 1
11 déc. 2005 à 16:11
comme toujours vous ne respectez pas le protocole lors du sockopen
essaye ça

on *:sockopen:news:{
if ($sockerr) { echo -a erreur de connexion | return }
sockwrite -n news GET /news.txt HTTP/1.1
sockwrite -n news Host: www.alsagamer.net $+ $str($crlf ,2)
}
3
Mc_AbBeR Messages postés 301 Date d'inscription mercredi 15 juin 2005 Statut Membre Dernière intervention 19 février 2007
10 déc. 2005 à 15:25
ben apprend les sockets, moi je ne connais pas trop sa alors fait un tour sur www.scriptsdb.org/
0
DragoonMaster Messages postés 60 Date d'inscription dimanche 15 juin 2003 Statut Membre Dernière intervention 16 mars 2009 1
10 déc. 2005 à 16:56
Alors je fais une rectification, vu mon niveau, et aussi mon temps ... je crois que ce que je cherche a avoir, c'est pas la solution pour le faire, mais bien du "tout cuit" ou alors, un exemple qui pourait marché pour moi .... (si ya des charactere a enlever, ok ...)
0
Mc_AbBeR Messages postés 301 Date d'inscription mercredi 15 juin 2005 Statut Membre Dernière intervention 19 février 2007
10 déc. 2005 à 18:28
Bon c'est pas moi qui doit faire ce travail mais bon... (moi aussi jen demande de trop des fois!!!!!!!!)
Ben jva t'faire un p'tit début (jsais pas si c'est bon, mais essaie quand même).

Tu te fait ton code toi même, moi je m'occupe des sockets.

; l'alias de démarrage
alias open_socket {
; on ferme la socket si yexiste déja ; pour pas que sa nous dit un vieux message pourri
sockclose news
; et on re-ouvre la socket sur tonsite.com port 80 (ne pas modifier le port, sa sert a rien)
sockopen news www.tonsite.com 80
}
; Quand la connection est établie, on demande la page news.txt (je te conseil de mettre tout tes news dans un txt, c'est plus facile pour la suite)
on 1:sockopen:news: sockwrite -n news get /news.txt
; Quand on reçois les informations
on *:sockread:news:{
; on récupère tout dans la variable %news.read
sockread %news.read
; on stock tout dans news.txt
write news.txt %news.read
}

Voila, ta ton dossier news.txt avec tout les news...
Si tu veux les /msg, j'pense il faut un while, non?
bah tiens! :

; l'alias, comme d'hab
alias news_say {
; le while, je ne met plus de commentaires (...)
var %h1 0, %h2 $lines(news.txt)
while %h1 <= %h2 { inc %h1
msg $chan $read(news.txt,%h1) }
}

et voila, pour supprimer le dossier (pour éviter d'avoir 10000000000000 news dans le txt) /remove news.txt
Maintenant débrouille toi, et si sa marche pas apel kk1 dautre que moi chu nul en sockets
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
RCA ArKanis Messages postés 1287 Date d'inscription mercredi 21 avril 2004 Statut Membre Dernière intervention 21 février 2009
10 déc. 2005 à 18:52
c'est le bon moyen pour excess flood, ton while ^^
fais plutôt un write -c news.txt au début du sockopen

et puis, utilise de préférence les hash tables ...

sinon, un code tout fait, mauvaise url ^^
0
DragoonMaster Messages postés 60 Date d'inscription dimanche 15 juin 2003 Statut Membre Dernière intervention 16 mars 2009 1
10 déc. 2005 à 19:18
Merci bcp ! C'est l'aide qu'il me falait, je vais pouvoir finalement m'y mettre :)
Merci bcp ;)
parcontre, j'ai fait ca :
alias alsa { /open_socket | /news_say | /remove news.txt }
alias open_socket {
sockclose news
sockopen news www.alsagamer.net 80
}
on 1:sockopen:news: sockwrite -n news get news.txt
on *:sockread:news:{
sockread %news.read
write news.txt %news.read
}
alias news_say {
var %h1 0, %h2 $lines(news.txt)
while %h1 <= %h2 { inc %h1
msg $chan $read(news.txt,%h1) }
}

Mais deja, il m'indique une erreur * /msg: insufficient parameters
Mais a la place de me lire le texte, ca m'ecris :
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head>
Bad Request

Your browser sent a request that this server could not understand.

<hr>
www.phpnet.org Port 80
</html>
0
DragoonMaster Messages postés 60 Date d'inscription dimanche 15 juin 2003 Statut Membre Dernière intervention 16 mars 2009 1
10 déc. 2005 à 19:58
fais plutôt un write -c news.txt au début du sockopen
et ca donnerais quoi ca ?
0
RCA ArKanis Messages postés 1287 Date d'inscription mercredi 21 avril 2004 Statut Membre Dernière intervention 21 février 2009
10 déc. 2005 à 20:55
ça efface la totalité du fichier news.txt (cf l'aide ...)

tes / devant les aliases servent à rien, et ça fait moche

ta page n'existe pas, crée la avant de la demander ^^

tu ne gères pas $sockerr, corrige ça vite fait :p
0
Mc_AbBeR Messages postés 301 Date d'inscription mercredi 15 juin 2005 Statut Membre Dernière intervention 19 février 2007
10 déc. 2005 à 20:57
Ouais ben la j'ai fait ma part, j'y connais kedal en sockets
0
DragoonMaster Messages postés 60 Date d'inscription dimanche 15 juin 2003 Statut Membre Dernière intervention 16 mars 2009 1
10 déc. 2005 à 21:39
Arka, c'est bien gentil, mais me dire ca, me sert a rien, puisque je ne sais pas l'appliquer .. soit plus concret !
0
RCA ArKanis Messages postés 1287 Date d'inscription mercredi 21 avril 2004 Statut Membre Dernière intervention 21 février 2009
10 déc. 2005 à 21:42
en gros, tape /help $sockerr d'abord, puis regarde des exemples de ce site pour savoir comment l'utiliser correctement
0
DragoonMaster Messages postés 60 Date d'inscription dimanche 15 juin 2003 Statut Membre Dernière intervention 16 mars 2009 1
11 déc. 2005 à 11:37
if ($sockerr > 0) return
:/
Vive les exemples !
0
RCA ArKanis Messages postés 1287 Date d'inscription mercredi 21 avril 2004 Statut Membre Dernière intervention 21 février 2009
11 déc. 2005 à 11:39
t'as pas besoin de plus ...
surtout si tu sais où le placer

le > 0 sert à rien, tu peux l'enlever
0
DragoonMaster Messages postés 60 Date d'inscription dimanche 15 juin 2003 Statut Membre Dernière intervention 16 mars 2009 1
11 déc. 2005 à 11:47
Justement, je ne sais ni ou le placé, ni comment l'utilisé !
0
RCA ArKanis Messages postés 1287 Date d'inscription mercredi 21 avril 2004 Statut Membre Dernière intervention 21 février 2009
11 déc. 2005 à 11:49
c'est que tu n'as pas regardé d'exemples alors ... pour savoir comment l'utiliser, je t'ai déjà dit, tape /help $sockerr
c'est automatique ce truc, t'as juste besoin de le placer où il faut ...
0
DragoonMaster Messages postés 60 Date d'inscription dimanche 15 juin 2003 Statut Membre Dernière intervention 16 mars 2009 1
11 déc. 2005 à 12:09
$sockerr
$sockerr is set to a value after each socket command/event and must be checked after each socket command and before processing an event to see if an error occurred.

Et l'exemple dit ca :
on 1:sockread:testing:{
if ($sockerr > 0) return
:nextread
sockread %temp
if ($sockbr == 0) return if (%temp $null) %temp -
echo 4 %temp
goto nextread
}


de plus, tu me dit qu'il n'y a pas besoin de > 0 donc ....

donc :
on *:sockread:news:{
if ($sockerr) return
sockread %news.read
write news.txt %news.read
}
0
RCA ArKanis Messages postés 1287 Date d'inscription mercredi 21 avril 2004 Statut Membre Dernière intervention 21 février 2009
11 déc. 2005 à 12:11
t'en as pas besoin dans le sockread logiquement ... ça serait plutôt dans le sockopen
pas d'bol, t'as choisi un mauvais exemple :/
0
DragoonMaster Messages postés 60 Date d'inscription dimanche 15 juin 2003 Statut Membre Dernière intervention 16 mars 2009 1
11 déc. 2005 à 12:17
l'exemple, c'est le seul fourni par /help $sockerr ....

Mais alors ca donnerai ca : ?

alias open_socket {
sockclose news
sockopen news www.alsagamer.net 80
}
on 1:sockopen:news: {
if ($sockerr) return
sockwrite -n news get news.txt
}
on *:sockread:news:{
sockread %news.read
write news.txt %news.read
}
0
RCA ArKanis Messages postés 1287 Date d'inscription mercredi 21 avril 2004 Statut Membre Dernière intervention 21 février 2009
11 déc. 2005 à 15:48
oui ^^
je t'avais dit de regarder des exemples du site et non pas de l'aide ^^

evite de write, mets directement dans des hash tables ou autre
0
Rejoignez-nous