diff --git a/config.js b/config.js new file mode 100644 index 0000000..c16c1e0 --- /dev/null +++ b/config.js @@ -0,0 +1,128 @@ +const fs = require('fs'); + +const Markup = require('telegraf/markup'); +const Extra = require('telegraf/extra'); + +const example_lang = require('./lang.js'); + +//=== TOOL FUNCTIONS + +/* Here you usualy write util functions that are used multiple times in the code (or a second file is recommended)*/ + +//=== MAIN MODULE CONFIG + +module.exports = function(){ + return { + name : "Template", //Unique Module name + key : "tmpl", //Unique Key for this module, if multiple instances add a number/text to it + version : 0.1, //Version Number, Currently unused + requirements : { + gps: false, //Currently un-used (all module have access to GPS) + }, + text : [ + { + trigger : ["/ping"], //Array of Triggers + public : true, //Should it be shown to user (user can still run the command without knowing it exists) + desc : {0:"Pings the user", + 1:"Envois un ping à l'utilisateur", + 2:"Yu-za- de pingu wo tsukawashite", + 3:"*insert arabic*", + }, + requirements : (bot,event,message)=>{ + return new Promise((resolve, reject)=>{ + if (false) + return reject(400); + return resolve(200); + }); + }, + action : (bot,event,message)=>{ + return event.reply("pong"); + } + }, + ], + reply : [ + { + requirements : (bot,event,message)=>{ + return new Promise((resolve,reject)=>{ + if(!message.text || message.reply_to_message.text != "Beep") + return reject(400); + return resolve(200); + }); + }, + action : (bot,event,message)=>{ + return event.reply(bot.gls(example_lang,"boop",event.master.lang)); + //The GLS functions returns automaticly the right message given the "key" and lang... + } + } + ], + regex : [ + ], + media : [ + ], + callback : [ + { + trigger : 'key_template', + requirements : (bot,event,message)=>{ + return new Promise((resolve, reject)=>{ + return resolve(200); + }); + }, + action : (bot,event,data)=>{ + return event.reply("Beep"); + } + }, + ], + inline : [ + { + public : true, + desc : { + 0:"English", + 1:"French", + 2:"Japanese", + 3:"Arabic", + 4:"German", + }, + reply : (bot,event,data)=>{ + return { + type: 'article', + id: 'aid', + title: 'BEEP Template', + description: "Template Module", + message_text: "BEEP BOP", + parse_mode:"Markdown", + reply_markup:Markup.inlineKeyboard([]), + }; + } + } + ], + new_member : (bot,event)=>{ + //return event.replyWithMarkdown("Welcome !"); + }, + weburl : [ + { + url : '_', + post_action : (bot,req,rep)=>{ + + }, + get_action : (bot,req,rep)=>{ + + }, + + } + ], + cron : [ + { + cstr : '0 0 * * * *', + params : [ null, true], + timezone : 'Europe/Zurich', + action : function(bot){ + this.bot = bot; + return function(){ + return this.bot.telegram.sendMessage("0","Beep",{"parse_mode":"Markdown"}); + } + } + } + ] +} + +} \ No newline at end of file diff --git a/db_low.js b/db_low.js new file mode 100644 index 0000000..86a1ff8 --- /dev/null +++ b/db_low.js @@ -0,0 +1,36 @@ +const low = require('lowdb'); +const FileSync = require('lowdb/adapters/FileSync'); + +var db = null; + +function db_init(db){ + db.defaults({ chats:[]}).write(); +} + +var dbc = function(name){ + const db_file = "./db/"+name+".json"; + var db = low(new FileSync(db_file)); + db_init(db); + return db; +}; + +const schema = { + chats:{ + id: "chat_id", + lang:"chat_lang", + tz:"chat_tz", + geo:"chat_geo", + }, +}; + + +module.exports = function(name){ + this.name = name; + this.db = dbc(name); + + this.dump_db = function(obj){ + return new Promise((resolve, reject)=>{ + resolve(this.db.get("chats").value()); + }); + }; +}; diff --git a/db_sqlite.js b/db_sqlite.js new file mode 100644 index 0000000..8df2788 --- /dev/null +++ b/db_sqlite.js @@ -0,0 +1,46 @@ +const sqlite3 = require('sqlite3');//.verbose(); + +function db_init(db){ + db.run("CREATE TABLE IF NOT EXISTS chats (id integer PRIMARY KEY AUTOINCREMENT, chat_id integer NOT NULL);"); +} + +var dbc = function(name){ + const db_file = "./db/"+name+".sqlite3"; + var db = new sqlite3.Database(db_file); + db_init(db); + return db; +}; + +const schema = { + chats:{ + id: "chat_id", + lang:"chat_lang", + tz:"chat_tz", + geo:"chat_geo", + }, +}; + +function db_request(db,req,requirements,cb){ + for(var i in requirements){ + if(!requirements[i]) return cb("Error in Arguments: "+requirements,null); + } + db.all(req, requirements, (err,res)=>{ + cb(err,res) + }); + +} + + + +module.exports = function(name){ + this.name = name; + this.db = dbc(name); + + this.dump_db = function(obj){ + return new Promise((resolve, reject)=>{ + this.db.all("SELECT * FROM chats",[],(err,res)=>{ + console.log(res); + resolve(res); + }); + }); + }; \ No newline at end of file diff --git a/lang.js b/lang.js new file mode 100644 index 0000000..b7c57f5 --- /dev/null +++ b/lang.js @@ -0,0 +1,17 @@ +module.exports = { + "beep":{ + 0: `English Beep`, + 1: `French Beep`, + 2: `Japanese Beep`, + 3: `Arabic Beep`, + 4: `German Beep`, + }, + "boop":{ + 0: `English Boop`, + 1: `French Boop`, + 2: `Japanese Boop`, + 3: `Arabic Boop`, + 4: `German Boop`, + }, + //... +} \ No newline at end of file