zBinFluffy
Member
Ich würde gerne Sinusbot Scripts progrmmieren lernen wäre nett wenn sich jemand zeit nehmen würde
Es gibt in der Hinsicht sehr viele Anleitungen, Videos, und und und im Internet (Google - dein Freund und Helfer) - meist auf englisch, aber das sollte man prinzipiell in den Bereich auch mitbringen. Wenn du im Genuss einer größeren Stadt als Wohnort bist bieten dort auch gegebenenfalls die VHS gute, preiswerte Kurse zu Programmiersprachen an.
Ich denke damit fährst du sicherlich besser als auf jemanden hier zu hoffen
- Dave
Und falls fragen auftauchen sollten über die scripting api ist dir im Sinusbot Discord immer noch am besten geholfen https://discord.gg/h6s5Ykc
Hm, da fühlt man sich doch ein wenig angegriffen.weil bei dieser Top Dokumentation ist einem überhaupt nicht geholfen und es wäre sehr wünschenswert wenn man da mal einen Anhaltspunkt hätte ohne das ich noch zwanzig Scripte zerlegen muss um irgendwelche Infos zum Sinusbot scripten zu erhalten
Hängt alles davon ab was du noch lernen musst und wie du am besten lernst. Das können andere nicht für dich einschätzen. Es gibt auf jeden Fall genug Material, wer nicht fündig wird ist sein eigenes Problem bzw. faul ^^wenn es doch so viele Tutorials dazu gibt, dann schick doch bitte mal hier nen Link rein
Das ist eigentlich ein sehr guter Weg zum lernen sobald man die Grundlagen beherrscht.ohne das ich noch zwanzig Scripte zerlegen muss um irgendwelche Infos zum Sinusbot scripten zu erhalten
Hm, da fühlt man sich doch ein wenig angegriffen.
Wir haben sehr viel Zeit in die Dokumentation gesteckt (auch machen dies auch weiterhin) und ich bin recht zufrieden damit.
Dass eine Dokumentation einer API dir nicht programmieren beibringt ist.... eigentlich recht offensichtlich? Das ist halt einfach nicht der Zweck.
Eine Dokumentation soll hauptsächlich einheitlich und fachlich richtig dokumentieren was für Schnittstellen es gibt. Beispiele sind auch enthalten, allerdings hauptsächlich Ausschnitte; Alles andere würde den Rahmen sprengen.
Wir haben dennoch zusätzlich ein kleines "Intro" zum Thema Scripting, welches auch in der Dokumentation verlinkt ist:
View attachment 3363
Siehe https://sinusbot.github.io/docs/scripts/#writing-a-script
Wir setzen allerdings grundlegende JavaScript Kenntnisse voraus, denn alles zu erklären ist ziemlich unmöglich und nicht unsere Aufgabe.
Hängt alles davon ab was du noch lernen musst und wie du am besten lernst. Das können andere nicht für dich einschätzen. Es gibt auf jeden Fall genug Material, wer nicht fündig wird ist sein eigenes Problem bzw. faul ^^
Keiner kann dir das eine universelle Tutorial geben, man lern über lange Zeit mit vieeelen verschiedenen und durch eigenes "Rumspielen".
Mozilla hat die besten JS Dokumentationen und auch Beginner Tutorials: https://developer.mozilla.org/en-US/docs/Web/javascript#Tutorials
Das ist eigentlich ein sehr guter Weg zum lernen sobald man die Grundlagen beherrscht.
Die Infos musst du nicht suchen, die sind ja Dokumentiert. Lernen kann für dich keiner.
Over and out.
Möchtest du, dass der Bot sich in den Channel moved?es geht halt wie gesagt nur darum wie ich auf Channel zugreifen kann, dazu fehlen mir halt einfach die Bespiele bzw. Erklärungen
Möchtest du, dass der Bot sich in den Channel moved?
Möchtest du die Beschreibung des Channels ändern?
Möchtest du die Anzahl der User im Channel auflisten?
Möchtest du die Channel Eigenschaften bearbeiten?
...
Du siehst, Beispiele können - und brauchen - niemals das abdecken, was du an Infos aus der Dokumentation herausholen kannst.
Mein Tipp an dich wäre, dass du etwas "reverse engineering" an Skripten aus den Ressources betreibst. Schau dir den Quelltext an, und versuche anhand der Dokumentation zu verstehen, was das Skript macht. Das sind deine "Beispiele", die du suchst.
Steiger dich von einfachen zu komplexeren Skripten und schon bald wirst du dein eigenen Skript dir bauen können.
Am besten fängst du an mit ein bisschen englisch und tastest dich dann intuitiv ran. Meistens versuchen die Entwickler es auch so intuitiv zu machen wie möglich.
Dann nutzt du die Suchfunktion.
Im konkreten Fall: du willst einen Channel haben. Übersetzt als Anweisung wäre das: get channel. Spaces gibt es in Befehlsnamen in der Regel nicht, also getchannel. Danach suchst du auf der Seite.
Protipp: die Kategorien und Module sind nicht ohne Grund da, man könnte sich auch da entlang hangeln. Dass die das Audio-Modul vermutlich keinen Channel holt, sollte auch selbstverständlich sein.
Wenn's immer noch hakt, wäre es vermutlich nicht verkehrt ein wenig Zeit in das Verständnis der Doku zu stecken.
Programmieren lernen heißt immer auch selbst forschen und probieren. Spoon-feeding nervt und hilft dir im Endeffekt auch nicht, wenn du wirklich Programmieren lernen willst, weil eben die Methode an die Infos zu kommen, die du brauchst, Teil des Jobs ist
Wenn es dir hingegen nur um eine schnelle Lösung des Problems geht, musst du deine Frage anders stellen
da mir die Doku nicht weiterhilft
Wenn's immer noch hakt, wäre es vermutlich nicht verkehrt ein wenig Zeit in das Verständnis der Doku zu stecken.
var backend = require('backend');
var channel = backend.getChannelByName('Welcome Channel');
channel.setDescription("blargh");
registerPlugin({
name: 'Description Maestro',
version: '1.0.0',
description: 'This scripts sets a description to a channel on connect.',
author: 'John McClane <[email protected]>',
vars: []
}, (_, config, meta) => {
const event = require('event');
const backend = require('backend');
event.on('connect' () => {
const channel = backend.getChannelByName('Welcome Channel');
if (!channel) return;
channel.setDescription('Yippie-Ki-Yay!');
});
});
Das ist nicht böse gemeint, aber es ist wirklich viel Zeit in die Doku geflossen und es haben schon einige Leute gut damit arbeiten können.
Dennoch, hier ein grober Überblick:
Beispiel von getChannelByName (dort landet man, wenn man wie ich sagte die Browser-Suche bemüht):
JavaScript:var backend = require('backend'); var channel = backend.getChannelByName('Welcome Channel');
Das gibt dir (wenn er existiert und der Bot verbunden ist) den Channel. Ein Channel hat die Funktion setDescription() => siehe hier.
JavaScript:channel.setDescription("blargh");
WANN du das aufrufst, hängt von dem ab, was dein Script tun soll.
Der Body der Funktion, die du an registerPlugin übergibst (die mainFunction), wird ausgeführt, sobald das Script geladen wird - da willst du das vermutlich nicht tun, da es sein kann, dass der Bot gar nicht mit dem Server verbunden ist. Also registrierst du über event.on() einen Callback, der aufgerufen wird, wenn das angegebene Event eintritt. Das kann sein:
- connect: sobald der Bot verbunden ist
- chat: wenn jemand etwas schreibt
- etcpp.
Ungetestet und ohne Garantie, hier ein Beispiel:
JavaScript:registerPlugin({ name: 'Description Maestro', version: '1.0.0', description: 'This scripts sets a description to a channel on connect.', author: 'John McClane <[email protected]>', vars: [] }, (_, config, meta) => { const event = require('event'); const backend = require('backend'); event.on('connect' () => { const channel = backend.getChannelByName('Welcome Channel'); if (!channel) return; channel.setDescription('Yippie-Ki-Yay!'); }); });
Das ist nicht böse gemeint, aber es ist wirklich viel Zeit in die Doku geflossen und es haben schon einige Leute gut damit arbeiten können.
Dennoch, hier ein grober Überblick:
Beispiel von getChannelByName (dort landet man, wenn man wie ich sagte die Browser-Suche bemüht):
JavaScript:var backend = require('backend'); var channel = backend.getChannelByName('Welcome Channel');
Das gibt dir (wenn er existiert und der Bot verbunden ist) den Channel. Ein Channel hat die Funktion setDescription() => siehe hier.
JavaScript:channel.setDescription("blargh");
WANN du das aufrufst, hängt von dem ab, was dein Script tun soll.
Der Body der Funktion, die du an registerPlugin übergibst (die mainFunction), wird ausgeführt, sobald das Script geladen wird - da willst du das vermutlich nicht tun, da es sein kann, dass der Bot gar nicht mit dem Server verbunden ist. Also registrierst du über event.on() einen Callback, der aufgerufen wird, wenn das angegebene Event eintritt. Das kann sein:
- connect: sobald der Bot verbunden ist
- chat: wenn jemand etwas schreibt
- etcpp.
Ungetestet und ohne Garantie, hier ein Beispiel:
JavaScript:registerPlugin({ name: 'Description Maestro', version: '1.0.0', description: 'This scripts sets a description to a channel on connect.', author: 'John McClane <[email protected]>', vars: [] }, (_, config, meta) => { const event = require('event'); const backend = require('backend'); event.on('connect' () => { const channel = backend.getChannelByName('Welcome Channel'); if (!channel) return; channel.setDescription('Yippie-Ki-Yay!'); }); });
/**/
event.on('connect', function(ev) {
var db = require('db');
var engine = require('engine');
var helpers = require('helpers');
var dbc = db.connect({ driver: 'mysql', host: 'localhost', username: 'root', password: '', database: 'eleven' }, function(err) {
if (err) {
engine.log("ERROR: " + err);
}
});
if (dbc) dbc.query("SELECT * FROM calendarNotes", function(err, res) {
if (!err) {
res.forEach(function(row) {
engine.log(helpers.toString(row.eleven));
});
}
});
});
/**/
Es ist echt alles an Infos da... siehe => DB Modul
Anschließend (!), um die Rechte zu gewähren, die Script-Einstellungen nochmal speichern.
Den DB connect solltest du nicht in einem wiederkehrenden Event absetzen, sondern globaler.
require(<module name>)
wie es auch unter dem namen "Modules" verlinkt ist(du kannst dazu ja ein Pull Request auf github machen da die docs von der Community gemacht werden und durch die tolle CI integration von @mxschmitt und @irgendwr automatisch auf Github pages deployed)
helpers.toString ist btw deprecated steht aber auch in der doku...