<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://knuddels-wiki.de/index.php?action=history&amp;feed=atom&amp;title=UserApp-Entwicklung%2FTutorials%2FBeginner</id>
	<title>UserApp-Entwicklung/Tutorials/Beginner - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://knuddels-wiki.de/index.php?action=history&amp;feed=atom&amp;title=UserApp-Entwicklung%2FTutorials%2FBeginner"/>
	<link rel="alternate" type="text/html" href="https://knuddels-wiki.de/index.php?title=UserApp-Entwicklung/Tutorials/Beginner&amp;action=history"/>
	<updated>2026-10-23T06:10:26Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Knuddels-Wiki</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://knuddels-wiki.de/index.php?title=UserApp-Entwicklung/Tutorials/Beginner&amp;diff=144041&amp;oldid=prev</id>
		<title>mrs fabelhaft: Änderung 143821 von mrs fabelhaft (Diskussion) rückgängig gemacht.</title>
		<link rel="alternate" type="text/html" href="https://knuddels-wiki.de/index.php?title=UserApp-Entwicklung/Tutorials/Beginner&amp;diff=144041&amp;oldid=prev"/>
		<updated>2021-10-10T11:16:06Z</updated>

		<summary type="html">&lt;p&gt;Änderung 143821 von &lt;a href=&quot;/index.php/Spezial:Beitr%C3%A4ge/mrs_fabelhaft&quot; title=&quot;Spezial:Beiträge/mrs fabelhaft&quot;&gt;mrs fabelhaft&lt;/a&gt; (&lt;a href=&quot;/index.php?title=Benutzer_Diskussion:mrs_fabelhaft&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Benutzer Diskussion:mrs fabelhaft (Seite nicht vorhanden)&quot;&gt;Diskussion&lt;/a&gt;) rückgängig gemacht.&lt;/p&gt;
&lt;a href=&quot;https://knuddels-wiki.de/index.php?title=UserApp-Entwicklung/Tutorials/Beginner&amp;amp;diff=144041&amp;amp;oldid=143821&quot;&gt;Änderungen zeigen&lt;/a&gt;</summary>
		<author><name>mrs fabelhaft</name></author>
	</entry>
	<entry>
		<id>https://knuddels-wiki.de/index.php?title=UserApp-Entwicklung/Tutorials/Beginner&amp;diff=143821&amp;oldid=prev</id>
		<title>mrs fabelhaft: Persönliche Anrede entfernt, Nutzer =&gt; Mitglied</title>
		<link rel="alternate" type="text/html" href="https://knuddels-wiki.de/index.php?title=UserApp-Entwicklung/Tutorials/Beginner&amp;diff=143821&amp;oldid=prev"/>
		<updated>2021-10-03T15:35:29Z</updated>

		<summary type="html">&lt;p&gt;Persönliche Anrede entfernt, Nutzer =&amp;gt; Mitglied&lt;/p&gt;
&lt;a href=&quot;https://knuddels-wiki.de/index.php?title=UserApp-Entwicklung/Tutorials/Beginner&amp;amp;diff=143821&amp;amp;oldid=128157&quot;&gt;Änderungen zeigen&lt;/a&gt;</summary>
		<author><name>mrs fabelhaft</name></author>
	</entry>
	<entry>
		<id>https://knuddels-wiki.de/index.php?title=UserApp-Entwicklung/Tutorials/Beginner&amp;diff=128157&amp;oldid=prev</id>
		<title>Tom Unterwegs: zu Kategorie &quot;UserApp-Entwicklung&quot; hinzugefügt</title>
		<link rel="alternate" type="text/html" href="https://knuddels-wiki.de/index.php?title=UserApp-Entwicklung/Tutorials/Beginner&amp;diff=128157&amp;oldid=prev"/>
		<updated>2019-07-23T08:27:25Z</updated>

		<summary type="html">&lt;p&gt;zu Kategorie &amp;quot;UserApp-Entwicklung&amp;quot; hinzugefügt&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;de&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version vom 23. Juli 2019, 10:27 Uhr&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l240&quot;&gt;Zeile 240:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 240:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[UserApp-Entwicklung|→ Übersicht: UserApp-Entwicklung]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[UserApp-Entwicklung|→ Übersicht: UserApp-Entwicklung]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Kategorie:UserApp-Entwicklung]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Tom Unterwegs</name></author>
	</entry>
	<entry>
		<id>https://knuddels-wiki.de/index.php?title=UserApp-Entwicklung/Tutorials/Beginner&amp;diff=128151&amp;oldid=prev</id>
		<title>Tom Unterwegs: /* Installation der UserApp */</title>
		<link rel="alternate" type="text/html" href="https://knuddels-wiki.de/index.php?title=UserApp-Entwicklung/Tutorials/Beginner&amp;diff=128151&amp;oldid=prev"/>
		<updated>2019-07-22T17:01:27Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Installation der UserApp&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;de&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version vom 22. Juli 2019, 19:01 Uhr&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l35&quot;&gt;Zeile 35:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 35:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   Hinweis: Durch einen Bug kann es sein, dass das Fenster auf dem Entwicklungs-Server nichts anzeigt. Schließe es einfach und öffne es gleich nochmal mit &amp;#039;&amp;#039;&amp;#039;/apps&amp;#039;&amp;#039;&amp;#039;. Wir hoffen, diesen Bug bald beheben zu können.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   Hinweis: Durch einen Bug kann es sein, dass das Fenster auf dem Entwicklungs-Server nichts anzeigt. Schließe es einfach und öffne es gleich nochmal mit &amp;#039;&amp;#039;&amp;#039;/apps&amp;#039;&amp;#039;&amp;#039;. Wir hoffen, diesen Bug bald beheben zu können.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Im Menüpunkt &quot;AppBot&quot; kannst du einen AppBot erstellen und an deine UserApp binden. Ein AppBot ist ein bisschen wie Butler James, nur eben für deine UserApp in deinem Channel. Drücke hierzu auf &quot;hinzufügen&quot; → &quot;Nick anlegen&quot;, denk dir einen Nicknamen aus und bestätige. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Mehr dazu findest du hier: [https://bitbucket.org/knuddels/user-apps/wiki/AppBotBinden Wie binde ich einen AppBot?]&amp;lt;br&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Im Menüpunkt &quot;AppBot&quot; kannst du einen &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[UserApp-Entwicklung/Doku/&lt;/ins&gt;AppBot&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|AppBot]] &lt;/ins&gt;erstellen und an deine UserApp binden. Ein AppBot ist ein bisschen wie &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[James|&lt;/ins&gt;Butler James&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]]&lt;/ins&gt;, nur eben für deine UserApp in deinem Channel. Drücke hierzu auf &quot;hinzufügen&quot; → &quot;Nick anlegen&quot;, denk dir einen Nicknamen aus und bestätige.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Starte jetzt deine erste UserApp.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Starte jetzt deine erste UserApp.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Tom Unterwegs</name></author>
	</entry>
	<entry>
		<id>https://knuddels-wiki.de/index.php?title=UserApp-Entwicklung/Tutorials/Beginner&amp;diff=127799&amp;oldid=prev</id>
		<title>Tom Unterwegs: Tutorial von bitbucket hierher umgezogen, Formatierung angepasst, verbesserte Erklärung, mehr Wiki-interne Links</title>
		<link rel="alternate" type="text/html" href="https://knuddels-wiki.de/index.php?title=UserApp-Entwicklung/Tutorials/Beginner&amp;diff=127799&amp;oldid=prev"/>
		<updated>2019-06-26T19:28:36Z</updated>

		<summary type="html">&lt;p&gt;Tutorial von bitbucket hierher umgezogen, Formatierung angepasst, verbesserte Erklärung, mehr Wiki-interne Links&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Einleitung ==&lt;br /&gt;
In diesem Tutorial lernst du Schritt für Schritt, deine erste UserApp zu programmieren.&amp;lt;br&amp;gt;&lt;br /&gt;
Hier geht es darum, erstmal alles zum Laufen zu bringen und ein paar Basics zu vermitteln, sodass ab dann selbstständig weiterentwickelt werden kann.&lt;br /&gt;
&lt;br /&gt;
== Bevor es losgeht ==&lt;br /&gt;
&lt;br /&gt;
=== Werde Entwickler ===&lt;br /&gt;
&lt;br /&gt;
Stelle sicher, dass du ein Entwickler bist. Gib dazu &amp;#039;&amp;#039;&amp;#039;/apps developer&amp;#039;&amp;#039;&amp;#039; im Chat ein und erfülle die Kriterien, falls du das noch nicht getan hast.&lt;br /&gt;
&lt;br /&gt;
=== Verwende die Desktop-App ===&lt;br /&gt;
&lt;br /&gt;
Wir empfehlen dir stark, zum Entwickeln die Desktop-App auf deinem Computer zu verwenden. Du kannst die App [https://www.knuddels.de/stapp-win hier herunterladen].&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Die erste UserApp ==&lt;br /&gt;
&lt;br /&gt;
=== Entwicklungs-Server ===&lt;br /&gt;
Das Entwickeln beginnt auf dem Entwicklungs-Server. Gib &amp;#039;&amp;#039;&amp;#039;/apps developer&amp;#039;&amp;#039;&amp;#039; ein und wähle den Punkt &amp;#039;&amp;#039;&amp;#039;Login auf Entwicklungs-Server&amp;#039;&amp;#039;&amp;#039; aus. Jetzt sollte eine Desktop-Verknüpfung für den Login auf dem Entwicklungs-Server angelegt worden sein.&amp;lt;br&amp;gt;&lt;br /&gt;
Wenn du Knuddels über diese Verknüpfung startest, landest du nach dem Login auf dem Entwicklungs-Server. Hier kannst du später in Ruhe an deiner UserApp tüfteln, bevor du deine Änderungen auf dem Live-Server hochlädst.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Logge dich jetzt mit den Zugangsdaten auf dem  Entwicklungsserver ein, die dir James gesendet hat (&amp;#039;&amp;#039;&amp;#039;Entwickler-Nick&amp;#039;&amp;#039;&amp;#039; und &amp;#039;&amp;#039;&amp;#039;Entwickler-Passwort&amp;#039;&amp;#039;&amp;#039;).&lt;br /&gt;
&lt;br /&gt;
  Tipp: Du kannst die Zugangsdaten aus James&amp;#039; Nachricht mit Shift+Rechtsklick in das Chat-Fenster kopieren.&lt;br /&gt;
&lt;br /&gt;
=== MyChannel ===&lt;br /&gt;
&lt;br /&gt;
Nach dem Einloggen sollte sich automatisch das [[MyChannel]]-Edit Fenster öffnen. Ansonsten gib &amp;#039;&amp;#039;&amp;#039;/mychannel&amp;#039;&amp;#039;&amp;#039; ein.&amp;lt;br&amp;gt;&lt;br /&gt;
Du legst dir jetzt einen eigenen Channel an, in dem du gleich deine erste UserApp installieren wirst. Eine Info zu den Einstellungen erhältst du durch Klicken auf den Titel des jeweiligen Feldes. Außer über deinen Channel-Namen musst du dir aber erstmal keine Gedanken machen (du kannst dieses Fenster jederzeit wieder mit &amp;#039;&amp;#039;&amp;#039;/mychannel&amp;#039;&amp;#039;&amp;#039; öffnen). Drücke anschließend auf &amp;#039;&amp;#039;&amp;#039;Speichern&amp;#039;&amp;#039;&amp;#039; und &amp;#039;&amp;#039;&amp;#039;Schließen&amp;#039;&amp;#039;&amp;#039; und betritt deinen MyChannel mit &amp;#039;&amp;#039;&amp;#039;/go &amp;lt;dein eigener Channel-Name&amp;gt;&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
=== Installation der UserApp ===&lt;br /&gt;
&lt;br /&gt;
Für dieses Tutorial haben wir dir schon Dateien für eine Beispiel-UserApp namens &amp;quot;HeyThere&amp;quot; auf den Server geladen. Installiere diese UserApp in deinem MyChannel mit &amp;#039;&amp;#039;&amp;#039;/apps install HeyThere&amp;#039;&amp;#039;&amp;#039;. Du kannst die UserApp später wieder aus deinem Channel löschen.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es müsste sich nun automatisch das Konfigurationsfenster für die UserApp geöffnet haben. Ansonsten öffne es selbst mit  &amp;#039;&amp;#039;&amp;#039;/apps&amp;#039;&amp;#039;&amp;#039; und klicke auf den Namen der UserApp (&amp;quot;HeyThere&amp;quot;).&lt;br /&gt;
  Hinweis: Durch einen Bug kann es sein, dass das Fenster auf dem Entwicklungs-Server nichts anzeigt. Schließe es einfach und öffne es gleich nochmal mit &amp;#039;&amp;#039;&amp;#039;/apps&amp;#039;&amp;#039;&amp;#039;. Wir hoffen, diesen Bug bald beheben zu können.&lt;br /&gt;
&lt;br /&gt;
Im Menüpunkt &amp;quot;AppBot&amp;quot; kannst du einen AppBot erstellen und an deine UserApp binden. Ein AppBot ist ein bisschen wie Butler James, nur eben für deine UserApp in deinem Channel. Drücke hierzu auf &amp;quot;hinzufügen&amp;quot; → &amp;quot;Nick anlegen&amp;quot;, denk dir einen Nicknamen aus und bestätige. Mehr dazu findest du hier: [https://bitbucket.org/knuddels/user-apps/wiki/AppBotBinden Wie binde ich einen AppBot?]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Starte jetzt deine erste UserApp.&lt;br /&gt;
  Falls sich kein entsprechendes Fenster öffnet, starte die UserApp selbst, indem du im App-Menü auf &amp;#039;&amp;#039;&amp;#039;aktivieren&amp;#039;&amp;#039;&amp;#039; klickst.&lt;br /&gt;
Verlasse nun deinen Channel (indem du in einen anderen Channel gehst) und betritt ihn dann wieder (z.B. mit &amp;#039;&amp;#039;&amp;#039;/go &amp;lt;dein eigener Channel-Name&amp;gt;&amp;#039;&amp;#039;&amp;#039;). Dein AppBot sollte dich jetzt begrüßen!&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um mit dem Entwickeln zu starten, mach mit dem nächsten Schritt weiter (FTP-Setup). Du kannst auch schon mal einen Blick in die [http://developer.knuddels.de/docs/ UserApps-API-Dokumentation] werfen.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bestimmt wird es auch mal eine Stelle geben, an der du nicht weiter weißt. Zögere nicht, [http://forum.knuddels.de/ubbthreads.php?ubb=postlist&amp;amp;Board=272&amp;amp;page=1 im Forum] Fragen zu stellen, wenn dir etwas nicht klar ist! Die anderen Entwickler sind freundlich, gehen fair miteinander um und helfen sich gerne gegenseitig.&lt;br /&gt;
&lt;br /&gt;
== FTP-Setup ==&lt;br /&gt;
&lt;br /&gt;
Du benötigst für die UserApp-Entwicklung ein FTP-Programm, um die Dateien für deine UserApp auf die Server von Knuddels hochzuladen.&lt;br /&gt;
&lt;br /&gt;
=== Was ist eigentlich FTP? ===&lt;br /&gt;
&lt;br /&gt;
FTP (File Transfer Protocol) ist ein Protokoll, mit dem Daten zwischen zwei Computern im Internet ausgetauscht werden können.&amp;lt;br&amp;gt;&lt;br /&gt;
Zum Glück gibt es ganz einfache Programme, die hinter den Kulissen dieses Protokoll sprechen, sodass du die Dateien mit wenigen Klicks hochladen kannst.&lt;br /&gt;
&lt;br /&gt;
=== Einrichtung des FTP-Zugangs ===&lt;br /&gt;
&lt;br /&gt;
Du wirst die Dateien deiner UserApp auf zwei verschiedenen Servern hochladen:&lt;br /&gt;
# auf dem &amp;#039;&amp;#039;&amp;#039;Entwicklungs-Server&amp;#039;&amp;#039;&amp;#039;, unter der URL &amp;#039;&amp;#039;&amp;#039;devappupload.knuddels.de&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
# auf dem &amp;#039;&amp;#039;&amp;#039;Live-Server&amp;#039;&amp;#039;&amp;#039;, unter der URL &amp;#039;&amp;#039;&amp;#039;appupload.knuddels.de&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Für beide Server musst du dir jeweils eine Verbindung einrichten. Dafür brauchst du ein FTP-Programm.&lt;br /&gt;
Schau dir dazu [https://bitbucket.org/knuddels/user-apps/wiki/Bootstrap/FTP-Setup diese Erklärung] an.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Diese Erklärung zeigt allerdings nur die Verbindung zum Live-Server&amp;#039;&amp;#039;&amp;#039; - verwende für den Entwicklungs-Server stattdessen die URL &amp;#039;&amp;#039;&amp;#039;devappupload.knuddels.de&amp;#039;&amp;#039;&amp;#039;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Als Zugangsdaten verwendest du die Zugangsdaten, die James dir geschickt hat (&amp;#039;&amp;#039;&amp;#039;FTP-Nutzer&amp;#039;&amp;#039;&amp;#039; und &amp;#039;&amp;#039;&amp;#039;FTP-Passwort&amp;#039;&amp;#039;&amp;#039;).&lt;br /&gt;
&lt;br /&gt;
  Tipp: Du kannst die Zugangsdaten aus James&amp;#039; Nachricht mit Shift+Rechtsklick in das Chat-Fenster kopieren.&lt;br /&gt;
  Unter &amp;#039;&amp;#039;&amp;#039;/apps developer&amp;#039;&amp;#039;&amp;#039; kannst du sie außerdem erneut anfordern.&lt;br /&gt;
&lt;br /&gt;
Achte außerdem jeweils darauf, eine &amp;#039;&amp;#039;&amp;#039;unverschlüsselte Verbindung&amp;#039;&amp;#039;&amp;#039; zu wählen.&lt;br /&gt;
&lt;br /&gt;
== Beispiel-Code anschauen ==&lt;br /&gt;
&lt;br /&gt;
Wenn du weißt, wie du Dateien über den FTP-Zugang von dem Server herunter- und hochladen kannst, kannst du dir jetzt anschauen, wie eine UserApp aufgebaut ist.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Logge dich in deinem FTP-Programm auf dem Entwicklungs-Server ein, navigiere in den Ordner &amp;#039;&amp;#039;&amp;#039;ftp → HeyThere&amp;#039;&amp;#039;&amp;#039; und lade dort die Datei &amp;#039;&amp;#039;&amp;#039;main.js&amp;#039;&amp;#039;&amp;#039; herunter. Du kannst diese Datei jetzt anschauen, verändern und dann wieder dort hochladen. So verstehst du, wie alles funktioniert.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die &amp;#039;&amp;#039;&amp;#039;main.js&amp;#039;&amp;#039;&amp;#039; kannst du sogar im normalen Texteditor anschauen und bearbeiten.&amp;lt;br&amp;gt;&lt;br /&gt;
Empfehlenswert ist das aber nicht.&lt;br /&gt;
*Auf Windows kannst du dir (zum Beispiel) [http://notepad-plus-plus.org/ Notepad++] herunterladen.&lt;br /&gt;
* Auf macOS kannst du dir (zum Beispiel) [https://itunes.apple.com/de/app/textwrangler/id404010395?mt=12 Textwrangler] herunterladen.&lt;br /&gt;
Diese Programme können dir das Entwickeln erleichtern. (Natürlich kannst du auch eine IDE verwenden, wenn du dich damit auskennst.)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Schau dir den Code jetzt an und nimm einige Veränderungen vor.&lt;br /&gt;
&lt;br /&gt;
  Idee: Lass deinen AppBot Besucher abhängig von ihrem Geschlecht begrüßen! Zum Beispiel männliche Besucher mit &amp;quot;Hey Prinz &amp;lt;Nickname&amp;gt;&amp;quot; und weibliche Besucher mit &amp;quot;Hey Prinzessin &amp;lt;Nickname&amp;gt;&amp;quot;. Findest du heraus, wie das geht?&lt;br /&gt;
&lt;br /&gt;
→ Jetzt ist ein guter Zeitpunkt, die [https://developer.knuddels.de/docs/ API-Dokumentation] anzuschauen.&lt;br /&gt;
Der Aufbau der &amp;#039;&amp;#039;&amp;#039;main.js&amp;#039;&amp;#039;&amp;#039; wird [https://bitbucket.org/knuddels/user-apps/wiki/Bootstrap/App-Erstellen hier] erklärt.&lt;br /&gt;
&lt;br /&gt;
Gehe danach folgendermaßen vor:&lt;br /&gt;
# Verändere die Datei und speichere sie.&lt;br /&gt;
# Lade die Datei auf den FTP-Server hoch (ersetze die alte &amp;#039;&amp;#039;&amp;#039;main.js&amp;#039;&amp;#039;&amp;#039;).&lt;br /&gt;
# Öffne das App-Menü in deinem Channel mit &amp;#039;&amp;#039;&amp;#039;/apps&amp;#039;&amp;#039;&amp;#039; und drücke auf &amp;#039;&amp;#039;&amp;#039;update/restart&amp;#039;&amp;#039;&amp;#039;. Deine App fährt herunter und startet nach wenigen Sekunden erneut - mit deinem neuen Code.&lt;br /&gt;
&lt;br /&gt;
Im nächsten Schritt wird gezeigt, wie man Besucher abhängig von ihrem Geschlecht begrüßen kann.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Begrüße Besucher abhängig von ihrem Geschlecht ==&lt;br /&gt;
&lt;br /&gt;
So kannst du neuen Besuchern eine Begrüßungsnachricht abhängig von ihrem Geschlecht schicken:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;main.js&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;!-- schneller Workaround (&amp;lt;code&amp;gt; ist kaputt, whitespaces werden gestript): Leerzeichen durch &amp;amp;nbsp; ersetzen --&amp;gt;&lt;br /&gt;
&amp;lt;!-- in Python: print(&amp;quot;code() {...}&amp;quot;.replace(&amp;quot; &amp;quot;, &amp;quot;&amp;amp;nbsp;&amp;quot;)) --&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
var&amp;amp;nbsp;App&amp;amp;nbsp;=&amp;amp;nbsp;(new&amp;amp;nbsp;function()&amp;amp;nbsp;{&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;this.onUserJoined&amp;amp;nbsp;=&amp;amp;nbsp;function(user)&amp;amp;nbsp;{&amp;amp;nbsp;&amp;amp;nbsp;//&amp;amp;nbsp;diese&amp;amp;nbsp;Funktion&amp;amp;nbsp;wird&amp;amp;nbsp;aufgerufen,&amp;amp;nbsp;wenn&amp;amp;nbsp;ein&amp;amp;nbsp;Nutzer&amp;amp;nbsp;den&amp;amp;nbsp;Channel&amp;amp;nbsp;betritt&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;let&amp;amp;nbsp;gender&amp;amp;nbsp;=&amp;amp;nbsp;user.getGender();&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;let&amp;amp;nbsp;nick&amp;amp;nbsp;&amp;amp;nbsp;=&amp;amp;nbsp;user.getNick();&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;let&amp;amp;nbsp;title;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;if&amp;amp;nbsp;(gender&amp;amp;nbsp;==&amp;amp;nbsp;Gender.Male)&amp;amp;nbsp;{&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;title&amp;amp;nbsp;=&amp;amp;nbsp;&amp;quot;Prinz&amp;amp;nbsp;&amp;quot;&amp;amp;nbsp;+&amp;amp;nbsp;nick;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;}&amp;amp;nbsp;else&amp;amp;nbsp;if&amp;amp;nbsp;(gender&amp;amp;nbsp;==&amp;amp;nbsp;Gender.Female)&amp;amp;nbsp;{&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;title&amp;amp;nbsp;=&amp;amp;nbsp;&amp;quot;Prinzessin&amp;amp;nbsp;&amp;quot;&amp;amp;nbsp;+&amp;amp;nbsp;nick;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;}&amp;amp;nbsp;else&amp;amp;nbsp;{&amp;amp;nbsp;&amp;amp;nbsp;//&amp;amp;nbsp;der&amp;amp;nbsp;Nutzer&amp;amp;nbsp;hat&amp;amp;nbsp;sich&amp;amp;nbsp;nicht&amp;amp;nbsp;als&amp;amp;nbsp;männlich&amp;amp;nbsp;oder&amp;amp;nbsp;weiblich&amp;amp;nbsp;ausgegeben&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;title&amp;amp;nbsp;=&amp;amp;nbsp;nick;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;let&amp;amp;nbsp;message&amp;amp;nbsp;=&amp;amp;nbsp;&amp;quot;Hey&amp;amp;nbsp;&amp;quot;&amp;amp;nbsp;+&amp;amp;nbsp;title&amp;amp;nbsp;+&amp;amp;nbsp;&amp;quot;,&amp;amp;nbsp;willkommen&amp;amp;nbsp;im&amp;amp;nbsp;Channel!&amp;amp;nbsp;Du&amp;amp;nbsp;bist&amp;amp;nbsp;&amp;quot;&amp;amp;nbsp;+&amp;amp;nbsp;user.getAge()&amp;amp;nbsp;+&amp;amp;nbsp;&amp;quot;&amp;amp;nbsp;Jahre&amp;amp;nbsp;alt.&amp;quot;;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;user.sendPrivateMessage(message);&amp;amp;nbsp;&amp;amp;nbsp;//&amp;amp;nbsp;der&amp;amp;nbsp;AppBot&amp;amp;nbsp;sendet&amp;amp;nbsp;eine&amp;amp;nbsp;private&amp;amp;nbsp;Nachricht&amp;amp;nbsp;an&amp;amp;nbsp;den&amp;amp;nbsp;Nutzer&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;}&lt;br /&gt;
}());&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Schaffst du es außerdem, die Besucher sowohl abhängig von ihrem Alter, als auch von ihrem Geschlecht zu begrüßen?   &lt;br /&gt;
→ Begrüße Besucher...&lt;br /&gt;
* unter 18 Jahren mit: &amp;#039;&amp;#039;&amp;#039;&amp;quot;Hallo Junge &amp;lt;Nickname&amp;gt;&amp;quot;&amp;#039;&amp;#039;&amp;#039; bzw. &amp;#039;&amp;#039;&amp;#039;&amp;quot;Hallo Mädchen &amp;lt;Nickname&amp;gt;&amp;quot;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* zwischen 18 und 60 Jahren mit: &amp;#039;&amp;#039;&amp;#039;&amp;quot;Hallo Herr &amp;lt;Nickname&amp;gt;&amp;quot;&amp;#039;&amp;#039;&amp;#039; bzw. &amp;#039;&amp;#039;&amp;#039;&amp;quot;Hallo Frau &amp;lt;Nickname&amp;gt;&amp;quot;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* über 60 Jahren mit: &amp;#039;&amp;#039;&amp;#039;&amp;quot;Hallo Opa &amp;lt;Nickname&amp;gt;&amp;quot;&amp;#039;&amp;#039;&amp;#039; bzw. &amp;#039;&amp;#039;&amp;#039;&amp;quot;Hallo Oma &amp;lt;Nickname&amp;gt;&amp;quot;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Schau in die [https://developer.knuddels.de/docs/ UserApps-API-Dokumentation], wenn du eine Funktion suchst.&lt;br /&gt;
Den fertigen Code kannst du dir hier herunterladen: [https://bitbucket.org/knuddels/user-apps/downloads/Beispielcode%20HeyThere%20-%20Stufe%202%20-%20Erweiterung.zip Begrüßung nach Alter und Geschlecht]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im nächsten Schritt lernst du, wie Besucher &amp;#039;&amp;#039;&amp;#039;Knuddel&amp;#039;&amp;#039;&amp;#039; an deinen AppBot transferieren können!&lt;br /&gt;
&lt;br /&gt;
== Knuddel überweisen ==&lt;br /&gt;
&lt;br /&gt;
Nutzer können Knuddel an deinen AppBot überweisen. Diese Knuddel kannst du dir dann später auf deinen eigenen Nick überweisen lassen. Hier lernst du, wie du das in deiner UserApp machen kannst.&lt;br /&gt;
&lt;br /&gt;
Der AppBot soll jeden neuen Nutzer nach einem Knuddel fragen. Wenn er diesen bekommt, bedankt er sich bei dem Nutzer.&lt;br /&gt;
&lt;br /&gt;
  Auf dem Entwicklungs-Server hat dein Nick so viele Knuddel, dass du das einfach testen kannst.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;main.js&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
var&amp;amp;nbsp;App&amp;amp;nbsp;=&amp;amp;nbsp;(new&amp;amp;nbsp;function()&amp;amp;nbsp;{&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;this.onUserJoined&amp;amp;nbsp;=&amp;amp;nbsp;function(user)&amp;amp;nbsp;{&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;var&amp;amp;nbsp;appBotNick&amp;amp;nbsp;=&amp;amp;nbsp;KnuddelsServer.getDefaultBotUser().getNick();&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;var&amp;amp;nbsp;message&amp;amp;nbsp;=&amp;amp;nbsp;&amp;quot;Gibst&amp;amp;nbsp;du&amp;amp;nbsp;mir&amp;amp;nbsp;_°BB°°&amp;gt;_heinen&amp;amp;nbsp;Knuddel|/appknuddel&amp;amp;nbsp;&amp;quot;&amp;amp;nbsp;+&amp;amp;nbsp;appBotNick.escapeKCode()&amp;amp;nbsp;+&amp;amp;nbsp;&amp;quot;&amp;lt;°°°_?&amp;quot;;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;user.sendPrivateMessage(message);&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;this.onKnuddelReceived&amp;amp;nbsp;=&amp;amp;nbsp;function(sender,&amp;amp;nbsp;receiver,&amp;amp;nbsp;knuddelAmount,&amp;amp;nbsp;transferReason)&amp;amp;nbsp;{&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;sender.sendPrivateMessage(&amp;quot;Danke,&amp;amp;nbsp;&amp;quot;&amp;amp;nbsp;+&amp;amp;nbsp;sender.getNick()&amp;amp;nbsp;+&amp;amp;nbsp;&amp;quot;!&amp;quot;);&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;}&lt;br /&gt;
}());&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Erklärung: Was ist KCode? ===&lt;br /&gt;
&lt;br /&gt;
In &amp;#039;&amp;#039;&amp;#039;App.onUserJoined&amp;#039;&amp;#039;&amp;#039; wird dem Nutzer eine Nachricht mit seltsamen Zeichen gesendet:  &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;Gibst du mir _°BB°°&amp;gt;_heinen Knuddel|/appknuddel &amp;quot; + appBotNick.escapeKCode() + &amp;quot;&amp;lt;°°°_?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Das ist [[Formatierungen|KCode]]. Dieser Code wird vor dem Anzeigen umgewandelt, sodass die Nutzer einen Link präsentiert bekommen, auf dessen Klick hin ein Befehl ausgeführt wird: Hier ist dieser Befehl &amp;#039;&amp;#039;&amp;#039;/appknuddel &amp;lt;Nickname des AppBots&amp;gt;&amp;#039;&amp;#039;&amp;#039;. Mit dem Klicken auf den Link überweist der Nutzer also einen Knuddel an den AppBot.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;appBotNick.escapeKCode()&amp;#039;&amp;#039;&amp;#039; dient dazu, dass der Befehl auch bei Sonderzeichen im Nicknamen deines AppBots richtig ausgeführt wird.&lt;br /&gt;
&lt;br /&gt;
[[Formatierungen|→ Hier kannst du dir anschauen, wie KCode funktioniert.]]&lt;br /&gt;
&lt;br /&gt;
  Idee für wahre Kapitalisten: Du kannst den Besucher deines Channels vielleicht dazu bringen, dem AppBot einen Knuddel zu schenken, wenn der AppBot dem Besucher nach einiger Zeit eine traurige Nachricht schreibt, falls er bis dahin keinen Knuddel von dem Besucher erhalten hat.&lt;br /&gt;
&lt;br /&gt;
Eine mögliche Lösung dieses Problems kannst du dir hier anschauen: [https://bitbucket.org/knuddels/user-apps/downloads/Beispielcode%20HeyThere%20-%20Stufe%203%20-%20Erweiterung.zip Download Code-Beispiel (Traurige Nachricht vom AppBot)]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im nächsten Schritt lernst du, wie du dauerhaft Daten über deine Besucher speichern kannst.&lt;br /&gt;
&lt;br /&gt;
== UserPersistence: Nutzerdaten speichern ==&lt;br /&gt;
&lt;br /&gt;
Wenn du dir beispielsweise dauerhaft merken willst, wie viele Knuddel ein Nutzer jeweils schon deinem AppBot überwiesen hat, brauchst du eine Möglichkeit, zu jedem Nutzer eine Zahl zu speichern.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  Allerdings kannst du nicht einfach eine Variable in deinem Code haben, worüber du alles speicherst - das wäre nämlich mit jedem Neustart der App wieder weg.&lt;br /&gt;
&lt;br /&gt;
In der [https://developer.knuddels.de/docs/ UserApps-API] gibt es genau dafür das Objekt [https://developer.knuddels.de/docs/classes/UserPersistence.html UserPersistence].&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;main.js&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
var&amp;amp;nbsp;App&amp;amp;nbsp;=&amp;amp;nbsp;(new&amp;amp;nbsp;function()&amp;amp;nbsp;{&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;this.onUserJoined&amp;amp;nbsp;=&amp;amp;nbsp;function(user)&amp;amp;nbsp;{&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;let&amp;amp;nbsp;userPersistence&amp;amp;nbsp;=&amp;amp;nbsp;user.getPersistence();&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;let&amp;amp;nbsp;userSpending&amp;amp;nbsp;=&amp;amp;nbsp;userPersistence.getNumber(&amp;quot;spending&amp;quot;,&amp;amp;nbsp;0);&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;if&amp;amp;nbsp;(userSpending&amp;amp;nbsp;&amp;gt;&amp;amp;nbsp;10)&amp;amp;nbsp;{&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;user.sendPrivateMessage(&amp;quot;Willkommen,&amp;amp;nbsp;gütiger&amp;amp;nbsp;Spender!&amp;quot;);&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;var&amp;amp;nbsp;appBotNick&amp;amp;nbsp;=&amp;amp;nbsp;KnuddelsServer.getDefaultBotUser().getNick();&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;var&amp;amp;nbsp;message&amp;amp;nbsp;=&amp;amp;nbsp;&amp;quot;Gibst&amp;amp;nbsp;du&amp;amp;nbsp;mir&amp;amp;nbsp;_°BB°°&amp;gt;_heinen&amp;amp;nbsp;Knuddel|/appknuddel&amp;amp;nbsp;&amp;quot;&amp;amp;nbsp;+&amp;amp;nbsp;appBotNick.escapeKCode()&amp;amp;nbsp;+&amp;amp;nbsp;&amp;quot;&amp;lt;°°°_?&amp;quot;;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;user.sendPrivateMessage(message);&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;this.onKnuddelReceived&amp;amp;nbsp;=&amp;amp;nbsp;function(sender,&amp;amp;nbsp;receiver,&amp;amp;nbsp;knuddelAmount,&amp;amp;nbsp;transferReason)&amp;amp;nbsp;{&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;sender.sendPrivateMessage(&amp;quot;Danke,&amp;amp;nbsp;&amp;quot;&amp;amp;nbsp;+&amp;amp;nbsp;sender.getNick()&amp;amp;nbsp;+&amp;amp;nbsp;&amp;quot;!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;let&amp;amp;nbsp;userPersistence&amp;amp;nbsp;=&amp;amp;nbsp;sender.getPersistence();&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;userPersistence.addNumber(&amp;quot;spending&amp;quot;,&amp;amp;nbsp;knuddelAmount.asNumber());&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;}&lt;br /&gt;
}());&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die App merkt sich nun, wie viele Knuddel deine Besucher bereits eingezahlt haben. Besonders gönnerische Besucher begrüßt er ehrerbietig!&lt;br /&gt;
&lt;br /&gt;
== Dein Fortschitt ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Du bist schon weit gekommen!&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
* Du hast gelernt, wie man sich auf dem Entwicklungs-Server anmeldet und eine App installiert.&lt;br /&gt;
* Du hast dich mit FTP vertraut gemacht und kannst deine Dateien jetzt einfach an den Knuddels-Server senden.&lt;br /&gt;
* Du weißt jetzt, wie man auf verschiedene Events in deinem Channel reagiert.&lt;br /&gt;
* Du bist mit der Überweisung von Knuddel an deinen AppBot vertraut.&lt;br /&gt;
* Du kannst Daten über deine Besucher dauerhaft speichern.&lt;br /&gt;
&lt;br /&gt;
Jetzt kannst du deine UserApp mal veröffentlichen! Dazu musst du deine UserApp per FTP auf dem Live-Server hochladen - so wie schon vorher auf dem Entwicklungs-Server. Melde dich dann ganz normal bei Knuddels an und installiere deine UserApp mit &amp;#039;&amp;#039;&amp;#039;/apps install &amp;lt;UserApp-Name&amp;gt;&amp;#039;&amp;#039;&amp;#039; in deinem MyChannel.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und wenn du jetzt noch deinen MyChannel unter &amp;#039;&amp;#039;&amp;#039;/mychannel&amp;#039;&amp;#039;&amp;#039; veröffentlichst, können auch andere Nutzer zufällig auf deinen MyChannel stoßen.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Wie geht&amp;#039;s weiter? ==&lt;br /&gt;
&lt;br /&gt;
Vielleicht hast du Lust, ein grafisches Spiel zu programmieren? Oder ein textbasiertes RPG?&amp;lt;br&amp;gt;&lt;br /&gt;
Ab jetzt bist du dir selbst überlassen - und kannst dich natürlich jederzeit an die Community wenden.&amp;lt;br&amp;gt;&lt;br /&gt;
Auf dem Entwickler-Portal [https://developer.knuddels.de/ developer.knuddels.de] findest du das meiste im Zusammenhang mit UserApps.&lt;br /&gt;
&lt;br /&gt;
[[UserApp-Entwicklung|→ Übersicht: UserApp-Entwicklung]]&lt;/div&gt;</summary>
		<author><name>Tom Unterwegs</name></author>
	</entry>
</feed>