unify typing logic for a more consistent experience

This commit is contained in:
bignutty 2024-12-08 15:00:18 +01:00
parent d2aeecf70d
commit 1ca74d3c2c
67 changed files with 240 additions and 109 deletions

View file

@ -1,7 +1,8 @@
const { PERMISSION_GROUPS } = require('#constants');
const { webAsk } = require('#obelisk');
const { createEmbed } = require('#utils/embed')
const { createEmbed } = require('#utils/embed');
const { acknowledge } = require('#utils/interactions');
const { iconPill, smallIconPill } = require('#utils/markdown')
const { editOrReply } = require('#utils/message')
const { STATIC_ICONS } = require('#utils/statics');
@ -23,7 +24,7 @@ module.exports = {
permissionsClient: [...PERMISSION_GROUPS.baseline],
run: async (context, args) => {
if(!await hasFeature(context, "flamingo/summary")) return;
context.triggerTyping();
await acknowledge(context);
if(!args.text) return editOrReply(context, createEmbed("warning", context, "You need to ask a question."))
if(!context.message.messageReference) return editOrReply(context, createEmbed("warning", context, "You need to reply to a message containing a link."))

View file

@ -2,6 +2,7 @@ const { emogen } = require("#api");
const { PERMISSION_GROUPS } = require("#constants");
const { createEmbed } = require("#utils/embed");
const { acknowledge } = require("#utils/interactions");
const { iconPill } = require("#utils/markdown");
const { editOrReply } = require("#utils/message");
const { hasFeature } = require("#utils/testing");
@ -22,8 +23,8 @@ module.exports = {
permissionsClient: [...PERMISSION_GROUPS.baseline, ...PERMISSION_GROUPS.attachments],
run: async (context, args) => {
if(!await hasFeature(context, "ai/imagen")) return;
context.triggerTyping();
await acknowledge(context);
if(!args.text) return editOrReply(context, createEmbed("warning", context, `Missing Parameter (prompt).`))
try{

View file

@ -2,6 +2,7 @@ const { PERMISSION_GROUPS } = require("#constants");
const { LlmModelsGenerate } = require("#obelisk");
const { createEmbed } = require("#utils/embed");
const { acknowledge } = require("#utils/interactions");
const { stringwrap, iconPill, smallIconPill } = require("#utils/markdown");
const { editOrReply } = require("#utils/message");
const { STATIC_ICONS } = require("#utils/statics");
@ -21,8 +22,8 @@ module.exports = {
permissionsClient: [...PERMISSION_GROUPS.baseline, ...PERMISSION_GROUPS.attachments],
run: async (context, args) => {
if(!await hasFeature(context, "ai/gemini/text")) return;
context.triggerTyping();
await acknowledge(context);
if(!args.text) return editOrReply(context, createEmbed("warning", context, `Missing Parameter (text).`))
let input = args.text;

View file

@ -3,6 +3,7 @@ const { geminiVision } = require("#obelisk");
const { getRecentImage } = require("#utils/attachment");
const { createEmbed } = require("#utils/embed");
const { acknowledge } = require("#utils/interactions");
const { stringwrap, iconPill, smallIconPill } = require("#utils/markdown");
const { editOrReply } = require("#utils/message");
const { STATIC_ICONS } = require("#utils/statics");
@ -22,8 +23,8 @@ module.exports = {
permissionsClient: [...PERMISSION_GROUPS.baseline, ...PERMISSION_GROUPS.attachments],
run: async (context, args) => {
if(!await hasFeature(context, "ai/gemini/vision")) return;
context.triggerTyping();
await acknowledge(context);
// for the sake of privacy, make the context window one message
let image = await getRecentImage(context, 1)
if (!image) return editOrReply(context, createEmbed("warning", context, "No images found. Reply if you want a specific image."))

View file

@ -1,7 +1,8 @@
const { PERMISSION_GROUPS } = require('#constants');
const { LlmPrivateBard } = require('#obelisk');
const { createEmbed } = require('#utils/embed')
const { createEmbed } = require('#utils/embed');
const { acknowledge } = require('#utils/interactions');
const { iconPill, stringwrap } = require('#utils/markdown')
const { editOrReply } = require('#utils/message')
const { STATIC_ICONS } = require('#utils/statics');
@ -25,8 +26,8 @@ module.exports = {
permissionsClient: [...PERMISSION_GROUPS.baseline, ...PERMISSION_GROUPS.attachments],
run: async (context, args) => {
if(!await hasFeature(context, "ai/bard")) return;
context.triggerTyping();
await acknowledge(context);
if(!args.text) return editOrReply(context, createEmbed("warning", context, `Missing Parameter (text).`))
let input = args.text;

View file

@ -6,6 +6,7 @@ const { editOrReply } = require('#utils/message')
const { iconPill, stringwrap, smallIconPill } = require('#utils/markdown')
const { STATICS, STATIC_ASSETS } = require('#utils/statics');
const { hasFeature } = require('#utils/testing');
const { acknowledge } = require('#utils/interactions');
module.exports = {
@ -26,8 +27,8 @@ module.exports = {
permissionsClient: [...PERMISSION_GROUPS.baseline, ...PERMISSION_GROUPS.attachments],
run: async (context, args) => {
if(!await hasFeature(context, "ai/gpt")) return;
context.triggerTyping();
await acknowledge(context);
if(!args.text) return editOrReply(context, createEmbed("warning", context, `Missing Parameter (text).`))
let input = args.text;

View file

@ -2,6 +2,7 @@ const { PERMISSION_GROUPS } = require("#constants");
const { GenerativeImagesModelsImagen } = require("#obelisk");
const { createEmbed } = require("#utils/embed");
const { acknowledge } = require("#utils/interactions");
const { iconPill, stringwrap } = require("#utils/markdown");
const { editOrReply } = require("#utils/message");
const { STATIC_ICONS, STATIC_ASSETS } = require("#utils/statics");
@ -21,8 +22,8 @@ module.exports = {
permissionsClient: [...PERMISSION_GROUPS.baseline, ...PERMISSION_GROUPS.attachments],
run: async (context, args) => {
if(!await hasFeature(context, "ai/imagen")) return;
context.triggerTyping();
await acknowledge(context);
if(!args.text) return editOrReply(context, createEmbed("warning", context, `Missing Parameter (prompt).`))
try{

View file

@ -6,6 +6,7 @@ const { editOrReply } = require('#utils/message')
const { iconPill, stringwrap, smallIconPill } = require('#utils/markdown')
const { STATIC_ICONS } = require('#utils/statics');
const { hasFeature } = require('#utils/testing');
const { acknowledge } = require('#utils/interactions');
module.exports = {
name: 'palm',
@ -25,8 +26,8 @@ module.exports = {
permissionsClient: [...PERMISSION_GROUPS.baseline, ...PERMISSION_GROUPS.attachments],
run: async (context, args) => {
if(!await hasFeature(context, "ai/palm")) return;
context.triggerTyping();
await acknowledge(context);
if(!args.text) return editOrReply(context, createEmbed("warning", context, `Missing Parameter (text).`))
let input = args.text;

View file

@ -1,7 +1,8 @@
const { PERMISSION_GROUPS } = require('#constants');
const { SparkWebSummarize } = require('#obelisk');
const { createEmbed } = require('#utils/embed')
const { createEmbed } = require('#utils/embed');
const { acknowledge } = require('#utils/interactions');
const { iconPill, smallIconPill } = require('#utils/markdown')
const { editOrReply } = require('#utils/message')
const { STATIC_ICONS } = require('#utils/statics');
@ -24,8 +25,8 @@ module.exports = {
permissionsClient: [...PERMISSION_GROUPS.baseline],
run: async (context, args) => {
if(!await hasFeature(context, "flamingo/summary")) return;
context.triggerTyping();
await acknowledge(context);
let content = args.text;
if(context.message.messageReference) {
let msg = await context.message.channel.fetchMessage(context.message.messageReference.messageId);

View file

@ -2,6 +2,7 @@ const { PERMISSION_GROUPS } = require("#constants");
const { wallpaper } = require("#obelisk");
const { createEmbed } = require("#utils/embed");
const { acknowledge } = require("#utils/interactions");
const { iconPill, stringwrap } = require("#utils/markdown");
const { editOrReply } = require("#utils/message");
const { STATIC_ICONS, STATIC_ASSETS } = require("#utils/statics");
@ -24,8 +25,8 @@ module.exports = {
permissionsClient: [...PERMISSION_GROUPS.baseline, ...PERMISSION_GROUPS.attachments],
run: async (context, args) => {
if(!await hasFeature(context, "ai/wallpapers")) return;
context.triggerTyping();
await acknowledge(context);
if(!args.text) return editOrReply(context, createEmbed("warning", context, `Missing Parameter (prompt).`))
if(!["wide","square"].includes(args.format.toLowerCase())) return editOrReply(context, createEmbed("warning", context, `Invalid Parameter (format).`))
try{