Tutorial's von A - Z (www.Knuddels.de.ch.at.MFC)  
 
  [TuT] Wordmixbot (C# + KLib) 24.06.2025 09:56 (UTC)
   
 
[TuT] Wordmixbot (C# + KLib)
Hay.

Ich zeig euch jetzt, wie man mithilfe der Klib einen Wordmixbot macht.
Ich gebe mir jetzt auch mal Mühe mit der Beschreibung *g

Fangen wir an...
Was ihr braucht:
  • Visual Studio, o.ä.
  • Evtl. ein paar C#-Kenntnisse
Schritt ^1: Interface
Ihr legt auf der Form an:
  1. LoginKram (Nick, PW, Channel, Login/out, Channelverlauf, Userlist, ..)
  2. Textbox (Wordmixurl)
  3. Label (Wordmixurleinträge)
  4. Button (Wordmixabfrage)
  5. Richtextbox (Log)
Schritt ^2: Imports
Ihr importiert folgendes über eurem namespace:
Code:
using System;
using System.Net;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
using KLib;
Dann noch unter public partial class Form1 : Form folgenes hinzufügen:
Code:
String frage;
Schritt ^3: Einloggen
Ihr geht ins Loginbutton_Click Event:
Das müsste dann zu anfangs so aussehen:
Code:
private void button1_Click(object sender, EventArgs e)
{

KC = new KLib.Client();

KC.Login(textBox2.Text, textBox3.Text, textBox4.Text, comboBox1.Text);

KC.SubscribeEvent.ChannelMessage += new KLib.Client.Events.ChannelMessageEventHandler(OnMessage);
KC.SubscribeEvent.ChannelActionMessage += new KLib.Client.Events.ChannelActionMessageEventHandler(OnActionMessage);
KC.SubscribeEvent.UserList += new KLib.Client.Events.UserListEventHandler(OnUserList);
KC.SubscribeEvent.ChannelJoin += new KLib.Client.Events.ChannelJoinEventHandler(OnChannelJoin);
KC.SubscribeEvent.ChannelLeave += new KLib.Client.Events.ChannelLeaveEventHandler(OnChannelLeave);
KC.SubscribeEvent.ChannelColorChanged += new KLib.Client.Events.ChannelColorChangedEventHandler(OnChannelColorChanged);
KC.SubscribeEvent.ConnectionLost += new KLib.Client.Events.ConnectionLostEventHandler(OnConnectionLost);
KC.SubscribeEvent.ExceptionOccurred += new KLib.Client.Events.ExceptionOccurredEventHandler(OnExceptionOccurred);
KC.SubscribeEvent.Ping += new KLib.Client.Events.PingEventHandler(OnPing);
KC.SubscribeEvent.Popup += new KLib.Client.Events.PopupEventHandler(OnPopup);
KC.SubscribeEvent.PrivateMessage += new KLib.Client.Events.PrivateMessageEventHandler(OnPrivateMessage);
KC.SubscribeEvent.WhoIs += new KLib.Client.Events.WhoIsEventHandler(OnWhoIs);


}
So nun fügt ihr folgenes unter KC.Login(textBox2.Text, textBox3.Text, textBox4.Text, comboBox1.Text); hinzu:
Code:
if (KC.IsConnected = true)
{
richTextBox2.SelectionColor = Color.Blue;
richTextBox2.AppendText("Erfolgreich eingeloggt!");
richTextBox2.SelectionColor = Color.Black;
}
Erklärung:
Wenn der Nick eingeloggt (connected) ist, wird der richTextBox2(Log) folgener Text in Blau zugefügt: "Erfolgreich eingeloggt!"
Schritt ^4: Einträge in URL zählen
Um die Einträge in der Wordmixurl zu zählen, muss man einen Webrequest erstellen.
Dieser Code kommt ins Wordmixabfrage-Button Event:
Code:
WebRequest req = WebRequest.Create(textBox4.Text + "?action=countsent");
WebResponse res = req.GetResponse;
StreamReader sr = new StreamReader(res.GetResponseStream);
string anzahl = sr.ReadLine;
label1.Text = anzahl;
Schritt ^5: Neue Runde
Als erstes fügen wir noch ein void hinzu.
Code:
void _frage(string wfrage)
{
string antw;
WebRequest req = WebRequest.Create(textBox4.Text + "?action=searchsent&q=" + wfrage);
WebResponse res = req.GetResponse;
StreamReader sr = new StreamReader(res.GetResponseStream);
antw = sr.ReadToEnd;
return antw;
}
Erklärung:
Dieser Code guckt, ob in der Datenbank die Frage vohanden ist.

Nun erstes mal die Sätze von James:
Zitat:
Nenne mir die Lösung für das folgende, wortvermixte Rätsel:
Hier kommt der nächste, durchgemixte Satz eines Klassikers:
Folgende gemixte Wörter sind zu entschlüsseln:
So nun kommt dieser Code ins OnMessage_Sub:
Code:
if (user.Name = "James")            {
switch (message)
{
case "Nenne mir die Lösung für das folgende, wortvermixte Rätsel:":
richTextBox2.SelectionColor = Color.DarkRed;
richTextBox2.AppendText("Eine neue Runde wurde gestartet!");
richTextBox2.SelectionColor = Color.Black;
frage = message.Replace("Nenne mir die Lösung für das folgende, wortvermixte Rätsel:", "")
.Replace("(0)", "").Replace("(1)", "").Replace("(2)", "").Replace("(3)", "")
.Replace("(4)", "").Replace("(5)", "").Replace("(6)", "").Replace("(7)", "")
.Replace("(8)", "").Replace("(9)", "");
if (_frage(frage) == "") {
richTextBox2.AppendText("Keine Antwort gefunden!");
}
else {
richTextBox2.AppendText("Antwort gefunden: " + _frage(frage));
KC.SendToChannel(_frage(frage));
}
case "Hier kommt der nächste, durchgemixte Satz eines Klassikers:":
richTextBox2.SelectionColor = Color.DarkRed;
richTextBox2.AppendText("Eine neue Runde wurde gestartet!");
richTextBox2.SelectionColor = Color.Black;
frage = message.Replace("Hier kommt der nächste, durchgemixte Satz eines Klassikers:", "")
.Replace("(0)", "").Replace("(1)", "").Replace("(2)", "").Replace("(3)", "")
.Replace("(4)", "").Replace("(5)", "").Replace("(6)", "").Replace("(7)", "")
.Replace("(8)", "").Replace("(9)", "");
if (_frage(frage) == "")
{
richTextBox2.AppendText("Keine Antwort gefunden!");
}
else
{
richTextBox2.AppendText("Antwort gefunden: " + _frage(frage));
KC.SendToChannel(_frage(frage));
}
case "Folgende gemixte Wörter sind zu entschlüsseln:":
richTextBox2.SelectionColor = Color.DarkRed;
richTextBox2.AppendText("Eine neue Runde wurde gestartet!");
richTextBox2.SelectionColor = Color.Black;
frage = message.Replace("Folgende gemixte Wörter sind zu entschlüsseln:", "")
.Replace("(0)", "").Replace("(1)", "").Replace("(2)", "").Replace("(3)", "")
.Replace("(4)", "").Replace("(5)", "").Replace("(6)", "").Replace("(7)", "")
.Replace("(8)", "").Replace("(9)", "");
if (_frage(frage) == "")
{
richTextBox2.AppendText("Keine Antwort gefunden!");
}
else
{
richTextBox2.AppendText("Antwort gefunden: " + _frage(frage));
KC.SendToChannel(_frage(frage));
}
}
}
Erklärung:
Wenn die Nachricht von James ist und einen der Sätze von James enthält, wird der Richtextbox2 ein Text hinzugefügt.
Dann werden die Nummern [(0),(1),(2),..] entfernt und dann der Anfangssatz von James.
Dann bleibt nur noch die Frage übrig.
Dann wird die Function _frage (s.o.) aufgerufen.
Diese gibt dann die Antwort zurück.
Wenn die Antwort nichts ist wird der Richtextbox geaddet das er keine Frage gefunden hat, wenn wohl wird die Antwort in den Channel gesendet.

Wenn ihr das mit Clipboard haben wollt müsst ihr: KC.SendToChannel(_frage(frage)); mit Clipboard.SetText(_frage(frage)); ersetzen.

(c) KoRn'

Bei Fragen or so einfach posten.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Heute waren schon 1 Besucher (12 Hits) hier!
Diese Webseite wurde kostenlos mit Homepage-Baukasten.de erstellt. Willst du auch eine eigene Webseite?
Gratis anmelden