Du bist nicht angemeldet. [Anmelden]
Optionen
Thema bewerten
Über chatCommand Privatnachricht an andere Nicks senden - #3097121 - 06.08.2019, 16:30:17
Love Oltion
Forumuser

Registriert: 02.09.2015
Beiträge: 15
Hallö
Ich versuche seit neuestem eine UserApp für meinen MyChannel zu entwickeln...
Holprig aber alles schön und gut, mehr oder weniger...

Ich versuche über einen Chat Command mit dem Bot eine Privatnachricht an einen anderen Nick als den Commanduser zu senden, der sich nicht zwangsweise im Channel befinden muss/soll.
Kann mir da jemand helfen? So... unkreativ ich auch bin, habe ich so einiges ausprobiert,
aber ich komme nicht weiter...
So sieht's im Moment bei mir aus
Code:
App.chatCommands = {
    inviteTC: function(user, param, command) {
        var Nick = param;
        user.sendPrivateMessage(Nick + ' Beispielnachricht', Nick);
    },

[zum Seitenanfang]  
Re: Über chatCommand Privatnachricht an andere Nicks senden [Re: Love Oltion] - #3097153 - 06.08.2019, 20:27:32
Kev777
​Forumsengel

Registriert: 03.09.2010
Beiträge: 7.612
Ich vermute mal es geht bei 'param' um user die noch nie im channel waren? Wenn ja dann wird das so nicht funktionieren, mit ''sendPrivateMessage'' kannst du nur an user nachrichten schicken die bereits in deinem mychannel waren seit deine app dort läuft.
_________________________
Orwell war ein Optimist
________

„Würden die Menschen das Geldsystem verstehen, hätten wir eine Revolution noch vor morgen früh.“
- Henry Ford

[zum Seitenanfang]  
Re: Über chatCommand Privatnachricht an andere Nicks senden [Re: Kev777] - #3097156 - 06.08.2019, 20:52:02
Love Oltion
Forumuser

Registriert: 02.09.2015
Beiträge: 15
Richtig. So war mein Plan jedenfalls.
Ist es das gleiche bei sendPostMessage?


Bearbeitet von Love Hai 4 (06.08.2019, 20:53:37)

[zum Seitenanfang]  
Re: Über chatCommand Privatnachricht an andere Nicks senden [Re: Love Oltion] - #3097158 - 06.08.2019, 21:38:15
Dave20009
Nicht registriert


Da ich dir im Chat leider nicht schreiben kann, hier nochmal der Text, den ich dir schreiben wollte:

Hast du es mittlerweile hinbekommen mit /p an USER schreiben via Bot? ich hab in meinem Channel schon seit langem eine Funktion eingebaut, damit kann man öffentlich, privat, /m mit Betreff und /do als Bot schreiben bzw. via Bot und Smiley Syntaxe werden vom Bot auch in die jeweiligen Smileys umgewandelt (Mentorsmileys).

Die meisten User und App-Coaches kannst du in die Tonne treten, sind alle so dermaßen inkompetent, arrogant und eingebildet und NICHT hilfsbereit! Wenn ich Arbeitgeber wäre und solche Inkompetente Angestellte hätte, die würden sofort fristlos gefeuert werden von mir! Ich helfe dir gerne, auch ohne Gegenleistung. Ich bin kein ekliger, arroganter Mensch, der nur an sich und den Profit denkt! Ich bin zwar sau schlecht in Javascript Programmierung aber ich würde dir das Script dann zeigen.

[zum Seitenanfang]  
Re: Über chatCommand Privatnachricht an andere Nicks senden [Re: Love Oltion] - #3097161 - 06.08.2019, 21:51:32
Kev777
​Forumsengel

Registriert: 03.09.2010
Beiträge: 7.612
Antwort auf: Love Hai 4
Richtig. So war mein Plan jedenfalls.
Ist es das gleiche bei sendPostMessage?

ja, auch damit kannst du usern erst eine nachricht schicken wenn derjenige bereits einmal im channel war seit deine app läuft.

Ich vermute du willst eine art freunde werben freunde funktion machen?
Das kannst du dann nur in der weise realisieren das der user eben selbst dem user schreibt.
Du kannst aber per app das ganze soweit vorbereiten und dem user der einladen will dann im channel zum absenden anbieten. Entwerder in die chateingabezeile und der user muss es dann absenden oder der user muss im channel einen button anklicken der dann entsprechend eine /p bzw. /m schickt. Allerdings kannst du nicht prüfen ob der user online ist, lediglich ob der user überhaupt existiert kannst du bei usern die noch nie im channel waren ermitteln.
_________________________
Orwell war ein Optimist
________

„Würden die Menschen das Geldsystem verstehen, hätten wir eine Revolution noch vor morgen früh.“
- Henry Ford

[zum Seitenanfang]  
Re: Über chatCommand Privatnachricht an andere Nicks senden [Re: Kev777] - #3097165 - 06.08.2019, 22:10:35
Love Oltion
Forumuser

Registriert: 02.09.2015
Beiträge: 15
Also eine Privatnachricht bekomme ich derweilen nur an mich selbst hin mit user.sendPrivateMessage. Wie ich wen anderes im Channel anschreibe peile ich gerade null. Hab jetzt mehrere Sachen ausprobiert, aber ich komme hier auf kein Ergebnis das mich auch nur Ansatzweise weiter bringt xD

Und ja genau. Eine Art Werbenaktion war geplant. Weniger werben als eher eine Art jemanden meiner Freunde in den Channel einzuladen.


Bearbeitet von Love Hai 4 (06.08.2019, 22:13:36)

[zum Seitenanfang]  
Re: Über chatCommand Privatnachricht an andere Nicks senden [Re: Love Oltion] - #3097210 - 07.08.2019, 07:16:12
UltimateG4ming
​#WirSindKeineBots

Registriert: 15.06.2010
Beiträge: 4.024
Dass immer nur der User, der die Funktion ausführt, angeschrieben wird, liegt daran, dass du mit user.sendPrivateMessage(string) immer genau diesem Benutzer eine Nachricht schickst.

Du müsstest via UserAccess.getUserById(userId) erst den eingegebenen Nutzer ermitteln. Die UserId erhältst du mit der Methode UserAccess.getUserId(nick). Das Result der ersten Abfrage ist dann das Benutzer-Objekt des eingegebenen Nicks, auf dem du dann entsprechend die sendPrivateMessage-Methode aufrufen kannst.

Beachte aber, dass über diesen Weg nur Nicks abgerufen werden können, die schon einmal im Channel waren, als deine App lief. Prüfen kannst du das via UserAccess.mayAccess(userId). Gibt diese Prüfung false zurück, kannst du, wie Kev777 bereits schrieb, zum Beispiel einen Button erzeugen, den der Benutzer nur noch drücken muss, um eine /m oder eine /p an den eingegebenen Benutzer zu schicken.
_________________________
if ($ahnung == 'keine' ) { use ( FAQ ) && ( Google | | Suche ) }
if ($antwort == 0 ) { post ( Frage ) }

[zum Seitenanfang]  
Re: Über chatCommand Privatnachricht an andere Nicks senden [Re: Love Oltion] - #3097212 - 07.08.2019, 07:25:29
--- geloeschter Benutzer ---
Nicht registriert


Code:
App.chatCommands = {
    inviteTC: function(user, param, command) {
        var bot = KnuddelsServer.getDefaultBotUser();
        var target= KnuddelsServer.getUserAccess().getUserById(KnuddelsServer.getUserAccess().getUserId(param));
        bot.sendPrivateMessage(target.getNick() + ' Beispielnachricht', target);
    },


Getestet habe ich das nicht, sollte aber funktionieren, wenn ich das noch richtig im Kopf habe.

Den Bot kannst du dir generell irgendwo zwischenspeichern, dann brauchst du das nicht immer wieder zu tun.
Du kannst damit aber nur User anschreiben, die auch mal in deinem Channel waren seitdem die App dort lief. Dein Bot muss also den Nutzer bereits kennen. Völlig fremde User einladen kannst du damit nicht.

Etwaige mögliche Fehler solltest du dann natürlich noch abfangen (nicht-existente User/unbekannte User).

Viel Glück damit.

Liebe Grüße

[zum Seitenanfang]  
Re: Über chatCommand Privatnachricht an andere Nicks senden [Re: ] - #3097226 - 07.08.2019, 11:51:54
Love Oltion
Forumuser

Registriert: 02.09.2015
Beiträge: 15
Code:
App.chatCommands = {
    inviteTC: function(user, param, command) {
        var bot = KnuddelsServer.getDefaultBotUser();
        var target= KnuddelsServer.getUserAccess().getUserById(KnuddelsServer.getUserAccess().getUserId(param));
        bot.sendPrivateMessage(target.getNick() + ' Beispielnachricht', target);
    },


Hab inzwischen auch schon wieder einiges ausprobiert, das ebenfalls, nachdem nichts funktioniert hat, und es ging auch nicht xD

Das von dreamboy auch nicht, da wird mir folgendes ausgespuckt
Hilfestellung: Im Objekt [object Object] gibt es keine Methode mit dem Namen getUserId. Hast du dich eventuell vertippt?


Bearbeitet von Love Hai 4 (07.08.2019, 11:55:55)

[zum Seitenanfang]  
Re: Über chatCommand Privatnachricht an andere Nicks senden [Re: Love Oltion] - #3097240 - 07.08.2019, 13:41:36
UltimateG4ming
​#WirSindKeineBots

Registriert: 15.06.2010
Beiträge: 4.024
Wie genau sieht denn dein Code gerade aus? Ich habe keinen fertigen Code geschickt, sondern nur die Methoden aufgelistet, die du benötigst.

Hast du denn die Beispiele bei den Methoden, die ich verlinkt habe, angeschaut und auf deinen Code adaptiert? Nur durch Copy&Paste lernt man nichts...
_________________________
if ($ahnung == 'keine' ) { use ( FAQ ) && ( Google | | Suche ) }
if ($antwort == 0 ) { post ( Frage ) }

[zum Seitenanfang]  
Re: Über chatCommand Privatnachricht an andere Nicks senden [Re: UltimateG4ming] - #3097264 - 07.08.2019, 17:56:37
Love Oltion
Forumuser

Registriert: 02.09.2015
Beiträge: 15
Copy&Paste ist mir zu doof
Code:
App.chatCommands = {
	inviteTC: function(user, param, command) {
		var Bot = KnuddelsServer.getDefaultBotUser();
		var UserAccess = KnuddelsServer.getUserAccess();
		var NickID = UserAccess.getUserId(param);
		var NickByID = UserAccess.getUserById(NickID);
		Bot.sendPostMessage(NickByID.getNick + 'Testnachricht vom Channelhilfebot', NickByID);
	},


So sieht das ganze aktuell aus
Hab auch mehrfach bei senPostMessage die variablen geswitcht etc., aber nix

[zum Seitenanfang]  
Re: Über chatCommand Privatnachricht an andere Nicks senden [Re: Love Oltion] - #3097270 - 07.08.2019, 18:49:30
IgelchenM
​Laubhaufenbewohner

Registriert: 10.02.2005
Beiträge: 1.479
Ort: Bochum
Ist denn der User den du "einladen" willst auch für's laden berechtigt? Denn danach wird aktuell noch nicht geprüft?

Außerdem fehlt beim drübersehen bei NickByID.getNick das (). Es sollte zumindest so aussehen: NickById.getNick()
_________________________
Wo zum Teufel ist dieser Wayne wenn man ihn braucht?!

[zum Seitenanfang]  
Re: Über chatCommand Privatnachricht an andere Nicks senden [Re: IgelchenM] - #3097278 - 07.08.2019, 19:53:42
Love Oltion
Forumuser

Registriert: 02.09.2015
Beiträge: 15
Ja aber es ist ja eh nur für den Nickname in der Nachricht, das spielt dann weniger eine Rolle, danke dennoch.
Die User mit denen ich das teste, mein 2. Nick z.B., ist berechtigt den Channel zu betreten.

[zum Seitenanfang]  
Re: Über chatCommand Privatnachricht an andere Nicks senden [Re: Love Oltion] - #3097338 - 08.08.2019, 19:43:11
root

Registriert: 19.03.2011
Beiträge: 1.812
Huhu.

Du übergibst einen Nick als String, zu dem du das Nutzer-Objekt haben willst. So könnte es beispielsweise gehen:

Code:
App.chatCommands = {
	inviteTC: function(user, param, command) {
		if (userAccess.exists(param)) {
			var userId = userAccess.getUserId(param);
			if (userAccess.mayAccess(userId)) {
				var nutzer = userAccess.getUserById(userId);
				// mache was mit nutzer
			} else {
				user.sendPrivateMessage('Dieser Nutzer war noch nie im Channel.');	
			}
		} else {
			user.sendPrivateMessage('Dieser Nutzer existiert nicht.');
		}
	},


Und wenn es mehrere sein sollen, fügst du das hinzu:

Code:
let nickArray = param.split(:);
// nun übergibst du einfach die einzelnen Elemente

nickArray.forEach(function(nick) {
		if (userAccess.exists(nick)) {
			var userId = userAccess.getUserId(nick);
			if (userAccess.mayAccess(userId)) {
				var nutzer = userAccess.getUserById(userId);
				// mache was mit nutzer
			} else {
				user.sendPrivateMessage('Dieser Nutzer war noch nie im Channel.');	
			}
		} else {
			user.sendPrivateMessage('Dieser Nutzer existiert nicht.');
		}
});


Grüße


Bearbeitet von its good (08.08.2019, 19:47:33)
_________________________
/

[zum Seitenanfang]  
Re: Über chatCommand Privatnachricht an andere Nicks senden [Re: root] - #3097340 - 08.08.2019, 19:51:07
root

Registriert: 19.03.2011
Beiträge: 1.812
Kann nicht mehr angepasst werden, daher so:

Hab vergessen: Das Trennzeichen in der Splitfunktion ist ein String, also param.split(';');

Dann funktioniert es auch. :-D
_________________________
/

[zum Seitenanfang]  
Re: Über chatCommand Privatnachricht an andere Nicks senden [Re: root] - #3097379 - 08.08.2019, 22:30:19
Love Oltion
Forumuser

Registriert: 02.09.2015
Beiträge: 15
Danke, ich verstehe dennoch nicht wie ich eine PostMessage an die andere Person senden soll
Der API-Wiki erzählt IMMER wieder andere Sachen, und... joa... ich weiß langsam gar nicht mehr wie ich das noch erklären soll xD

[zum Seitenanfang]  
Re: Über chatCommand Privatnachricht an andere Nicks senden [Re: Love Oltion] - #3097394 - 09.08.2019, 05:25:19
root

Registriert: 19.03.2011
Beiträge: 1.812
Antwort auf: Love Hai 4
Danke, ich verstehe dennoch nicht wie ich eine PostMessage an die andere Person senden soll
Der API-Wiki erzählt IMMER wieder andere Sachen, und... joa... ich weiß langsam gar nicht mehr wie ich das noch erklären soll xD


Die Methode erwartet zwei Parameter, einen String als Betreff und einen String als Nachricht und wird auf ein Nutzerobjekt angewandt.

Mit dem Code oben wandelst du deinen String/Zeichenkette (den Nickname) in ein Nutzerobjekt um, das diese Methode als Eigenschaft hat.

Wenn du das Nutzer-Objekt hast, nimmst du einfach diesen Code:

Code:
var subject = 'Betreff';
var message = 'Hier steht die Nachricht, die an den/die Nutzer per /m verschickt werden soll';

nutzer.sendPostMessage(subject, message);



Oder komplett an mehrere dann so:

Code:
App.chatCommands = {
inviteTC: function(user, param, command) {
let nickArray = param.split(':');
nickArray.forEach(function(nick) {
		if (userAccess.exists(nick)) {
			var userId = userAccess.getUserId(nick);
			if (userAccess.mayAccess(userId)) {
				var nutzer = userAccess.getUserById(userId);
				var subject = 'Betreff';
				var message = 'Hier steht die Nachricht, die an den/die Nutzer per /m verschickt werden soll';
				nutzer.sendPostMessage(subject, message);
			} 
		}
});



Die Meldung, dass der Nutzer nicht zugreifbar ist oder nicht existiert, habe ich weggelassen, da sie für jeden Nutzer kommen würde.

Diese Nachricht (Befehl /inviteTC:nick1:nick2:nick3 usw.) wird also unter den Bedingungen verschickt, dass der Nutzer a) existiert und b) min. einmal im Channel war. Wichtig ist, dass das Trennzeichen ":" zwischen den Nicks genutzt wird.






Bearbeitet von its good (09.08.2019, 05:28:22)
_________________________
/

[zum Seitenanfang]  
Re: Über chatCommand Privatnachricht an andere Nicks senden [Re: root] - #3098419 - 20.08.2019, 21:25:49
Love Oltion
Forumuser

Registriert: 02.09.2015
Beiträge: 15
OMG, danke
Die Zeile "nutzter.sendPostMesage(sub, mes);" hat mich darauf gebracht warum es bei mir nie funktioniert hat...
Danke auch für den Tipp :D

Kein Plan ob man i-wie ein Danke vergeben kann, aber wenn ja, hättest es xD
Antwort auf: its good

Code:
App.chatCommands = {
inviteTC: function(user, param, command) {
let nickArray = param.split(':');
nickArray.forEach(function(nick) {
		if (userAccess.exists(nick)) {
			var userId = userAccess.getUserId(nick);
			if (userAccess.mayAccess(userId)) {
				var nutzer = userAccess.getUserById(userId);
				var subject = 'Betreff';
				var message = 'Hier steht die Nachricht, die an den/die Nutzer per /m verschickt werden soll';
				nutzer.sendPostMessage(subject, message);
			} 
		}
});



[zum Seitenanfang]  


Moderator(en):  Plueschzombie