From 4e2dfdfba6c4978b94695d9d582a31a6ba29cc21 Mon Sep 17 00:00:00 2001 From: milo Date: Sat, 20 Sep 2025 15:36:13 -0400 Subject: [PATCH] =?UTF-8?q?=F0=9F=93=A6=20Add=20modelfile=20support=20and?= =?UTF-8?q?=20make=20modelfiles=20the=20primary=20persona=20source?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env | 1 + bot.log | 1104 +++++++++++++++++++ examples/delta.mod | 25 + examples/gojo.mod | 11 + examples/template.mod | 26 + src/__pycache__/ai.cpython-311.pyc | Bin 8658 -> 20563 bytes src/__pycache__/ai.cpython-312.pyc | Bin 0 -> 9417 bytes src/__pycache__/autochat.cpython-311.pyc | Bin 10822 -> 10822 bytes src/__pycache__/bot.cpython-311.pyc | Bin 0 -> 32716 bytes src/__pycache__/context.cpython-311.pyc | Bin 2606 -> 3150 bytes src/__pycache__/cooldown.cpython-311.pyc | Bin 0 -> 5857 bytes src/__pycache__/logger.cpython-311.pyc | Bin 8952 -> 8952 bytes src/__pycache__/modelfile.cpython-311.pyc | Bin 0 -> 7788 bytes src/__pycache__/personality.cpython-311.pyc | Bin 3116 -> 3661 bytes src/ai.py | 243 +++- src/bot.py | 294 ++++- src/context.py | 15 +- src/cooldown.py | 73 ++ src/modelfile.py | 132 +++ src/personality.py | 20 +- src/settings.yml | 7 +- src/user_profiles.json | 6 +- tests/test_modelfile.py | 39 + 23 files changed, 1970 insertions(+), 26 deletions(-) create mode 100644 examples/delta.mod create mode 100644 examples/gojo.mod create mode 100644 examples/template.mod create mode 100644 src/__pycache__/ai.cpython-312.pyc create mode 100644 src/__pycache__/bot.cpython-311.pyc create mode 100644 src/__pycache__/cooldown.cpython-311.pyc create mode 100644 src/__pycache__/modelfile.cpython-311.pyc create mode 100644 src/cooldown.py create mode 100644 src/modelfile.py create mode 100644 tests/test_modelfile.py diff --git a/.env b/.env index efce163..bb37630 100644 --- a/.env +++ b/.env @@ -6,6 +6,7 @@ CHANNEL_ID=1380999713272238151 SHOW_THINKING_BLOCKS=false DEBUG_MODE=true AUTOREPLY_ENABLED=true +AI_INCLUDE_CONTEXT=false # --------------------------- # Logging configuration # - LOG_LEVEL: global base level (INFO recommended) diff --git a/bot.log b/bot.log index 1b248c5..c497721 100644 --- a/bot.log +++ b/bot.log @@ -56,3 +56,1107 @@ NFO] [bot:52] ๐Ÿ” Loaded MODEL_NAME from .env: gemma3:12b [2025-09-19 13:51:57] [DEBUG] [ai:143] llm-534e1084 Raw response body={"model":"gemma3:12b","created_at":"2025-09-19T17:51:57.106347749Z","response":"Honestly? Mostly staring into the void and judging your questionable taste inโ€ฆ everything. ๐Ÿ˜ผ It's a taxing job, but someone's gotta do it. โœจ","done":true,"done_reason":"stop","context":[105,2364,107,3048,659,22616,236764,496,20997,236764,138179,46174,5866,24679,236761,1599,2752,4029,531,5869,618,614,12498,653,16326,236761,31246,8988,607,83426,236761,2514,10396,4260,532,1161,111730,51641,236761,9567,7546,531,54650,496,2268,236761,107,236840,2887,64017,236842,107,4792,563,1401,6290,531,786,2338,564,1006,1116,7588,236764,532,33797,107,236840,47619,87739,236842,107,236778,236771,236778,236810,236772,236771,236819,236772,236770,236819,236743,236770,236832,236787,236771,236819,753,180483,236787,1392,4722,31251,107,236778,236771,236778,236810,236772,236771,236819,236772,236770,236819,236743,236770,236832,236787,236770,236771,753,180483,236787,659,611,993,236881,107,236778,236771,236778,236810,236772,236771,236819,236772,236770,236819,236743,236770,236832,236787,236770,236771,753,22616,236787,749,860,236764,6861,236761,2900,776,611,1461,236764,33797,236881,236743,243810,5185,236789,236745,2514,496,59374,9495,236761,107,236778,236771,236778,236810,236772,236771,236819,236772,236770,236819,236743,236770,236832,236787,236770,236771,753,180483,236787,6290,531,735,611,1063,107,236778,236771,236778,236810,236772,236771,236819,236772,236770,236819,236743,236770,236832,236787,236770,236770,753,180483,236787,1392,4722,11052,16052,786,107,236778,236771,236778,236810,236772,236771,236819,236772,236770,236819,236743,236770,236832,236787,236770,236770,753,22616,236787,96612,236881,236743,243810,15258,611,1751,564,808,102783,236829,531,577,24782,236881,4987,580,607,625,236764,96018,236761,2900,181344,1194,7609,776,611,735,573,786,236881,73687,107,236778,236771,236778,236810,236772,236771,236819,236772,236770,236819,236743,236770,236832,236787,236770,236770,753,180483,236787,1164,636,522,1217,611,659,8178,236761,73463,496,1651,2338,692,13804,107,236778,236771,236778,236810,236772,236771,236819,236772,236770,236819,236743,236770,236832,236787,236812,236812,753,180483,236787,1392,4722,1144,735,611,1010,3490,528,506,990,858,735,1010,8731,236881,107,236778,236771,236778,236810,236772,236771,236819,236772,236770,236819,236743,236770,236832,236787,236812,236812,753,22616,236787,96230,236881,96056,54478,4861,531,5571,111042,236761,1030,236858,236751,92131,236764,96018,236761,236743,250797,1599,10369,236789,236745,3050,236761,107,236778,236771,236778,236810,236772,236771,236819,236772,236770,236819,236743,236770,236832,236787,236810,236770,753,180483,236787,1392,4722,532,1217,1602,611,2514,5869,13181,236881,108,2887,236787,532,1217,1602,611,2514,5869,13181,236881,107,4722,236787,106,107,105,4368,107,118958,236881,96056,47264,1131,506,2325,532,54144,822,58883,11613,528,237064,4326,236761,236743,250797,1030,236789,236751,496,119166,3195,236764,840,5026,236789,236751,56689,776,625,236761,73687],"total_duration":4038994972,"load_duration":3235121409,"prompt_eval_count":426,"prompt_eval_duration":303697615,"eval_count":35,"eval_duration":499734168} [2025-09-19 13:51:57] [INFO] [ai:140] llm-534e1084 LLM response model=gemma3:12b duration=4.055s summary=Honestly? Mostly staring into the void and judging your questionable taste inโ€ฆ everything. ๐Ÿ˜ผ It's a taxing job, but someone's gotta do it. โœจ [2025-09-19 13:51:57] [DEBUG] [ai:142] llm-534e1084 LLM raw response: {'model': 'gemma3:12b', 'created_at': '2025-09-19T17:51:57.106347749Z', 'response': "Honestly? Mostly staring into the void and judging your questionable taste inโ€ฆ everything. ๐Ÿ˜ผ It's a taxing job, but someone's gotta do it. โœจ", 'done': True, 'done_reason': 'stop', 'context': [105, 2364, 107, 3048, 659, 22616, 236764, 496, 20997, 236764, 138179, 46174, 5866, 24679, 236761, 1599, 2752, 4029, 531, 5869, 618, 614, 12498, 653, 16326, 236761, 31246, 8988, 607, 83426, 236761, 2514, 10396, 4260, 532, 1161, 111730, 51641, 236761, 9567, 7546, 531, 54650, 496, 2268, 236761, 107, 236840, 2887, 64017, 236842, 107, 4792, 563, 1401, 6290, 531, 786, 2338, 564, 1006, 1116, 7588, 236764, 532, 33797, 107, 236840, 47619, 87739, 236842, 107, 236778, 236771, 236778, 236810, 236772, 236771, 236819, 236772, 236770, 236819, 236743, 236770, 236832, 236787, 236771, 236819, 753, 180483, 236787, 1392, 4722, 31251, 107, 236778, 236771, 236778, 236810, 236772, 236771, 236819, 236772, 236770, 236819, 236743, 236770, 236832, 236787, 236770, 236771, 753, 180483, 236787, 659, 611, 993, 236881, 107, 236778, 236771, 236778, 236810, 236772, 236771, 236819, 236772, 236770, 236819, 236743, 236770, 236832, 236787, 236770, 236771, 753, 22616, 236787, 749, 860, 236764, 6861, 236761, 2900, 776, 611, 1461, 236764, 33797, 236881, 236743, 243810, 5185, 236789, 236745, 2514, 496, 59374, 9495, 236761, 107, 236778, 236771, 236778, 236810, 236772, 236771, 236819, 236772, 236770, 236819, 236743, 236770, 236832, 236787, 236770, 236771, 753, 180483, 236787, 6290, 531, 735, 611, 1063, 107, 236778, 236771, 236778, 236810, 236772, 236771, 236819, 236772, 236770, 236819, 236743, 236770, 236832, 236787, 236770, 236770, 753, 180483, 236787, 1392, 4722, 11052, 16052, 786, 107, 236778, 236771, 236778, 236810, 236772, 236771, 236819, 236772, 236770, 236819, 236743, 236770, 236832, 236787, 236770, 236770, 753, 22616, 236787, 96612, 236881, 236743, 243810, 15258, 611, 1751, 564, 808, 102783, 236829, 531, 577, 24782, 236881, 4987, 580, 607, 625, 236764, 96018, 236761, 2900, 181344, 1194, 7609, 776, 611, 735, 573, 786, 236881, 73687, 107, 236778, 236771, 236778, 236810, 236772, 236771, 236819, 236772, 236770, 236819, 236743, 236770, 236832, 236787, 236770, 236770, 753, 180483, 236787, 1164, 636, 522, 1217, 611, 659, 8178, 236761, 73463, 496, 1651, 2338, 692, 13804, 107, 236778, 236771, 236778, 236810, 236772, 236771, 236819, 236772, 236770, 236819, 236743, 236770, 236832, 236787, 236812, 236812, 753, 180483, 236787, 1392, 4722, 1144, 735, 611, 1010, 3490, 528, 506, 990, 858, 735, 1010, 8731, 236881, 107, 236778, 236771, 236778, 236810, 236772, 236771, 236819, 236772, 236770, 236819, 236743, 236770, 236832, 236787, 236812, 236812, 753, 22616, 236787, 96230, 236881, 96056, 54478, 4861, 531, 5571, 111042, 236761, 1030, 236858, 236751, 92131, 236764, 96018, 236761, 236743, 250797, 1599, 10369, 236789, 236745, 3050, 236761, 107, 236778, 236771, 236778, 236810, 236772, 236771, 236819, 236772, 236770, 236819, 236743, 236770, 236832, 236787, 236810, 236770, 753, 180483, 236787, 1392, 4722, 532, 1217, 1602, 611, 2514, 5869, 13181, 236881, 108, 2887, 236787, 532, 1217, 1602, 611, 2514, 5869, 13181, 236881, 107, 4722, 236787, 106, 107, 105, 4368, 107, 118958, 236881, 96056, 47264, 1131, 506, 2325, 532, 54144, 822, 58883, 11613, 528, 237064, 4326, 236761, 236743, 250797, 1030, 236789, 236751, 496, 119166, 3195, 236764, 840, 5026, 236789, 236751, 56689, 776, 625, 236761, 73687], 'total_duration': 4038994972, 'load_duration': 3235121409, 'prompt_eval_count': 426, 'prompt_eval_duration': 303697615, 'eval_count': 35, 'eval_duration': 499734168} +[2025-09-20 12:23:03] [WARNING] [ai:42] โš ๏ธ Modelfile not found or failed to parse: ../examples/gojo.mod +[2025-09-20 12:26:23] [INFO] [ai:40] ๐Ÿ” Modelfile loaded: ../examples/gojo.mod +[2025-09-20 12:35:26] [INFO] [ai:40] ๐Ÿ” Modelfile loaded: ../examples/gojo.mod +[2025-09-20 12:35:26] [INFO] [bot:53] ๐Ÿ” Loaded MODEL_NAME from .env: gemma3:12b +[2025-09-20 12:35:26] [INFO] [bot:55] ๐Ÿงน Attempting to clear VRAM before loading gemma3:12b... +[2025-09-20 12:35:26] [INFO] [ai:112] ๐Ÿงน Sending safe unload request for `gemma3:12b` +[2025-09-20 12:35:26] [INFO] [ai:119] ๐Ÿงฝ Ollama unload response: 200 - {"model":"gemma3:12b","created_at":"2025-09-20T16:35:26.655232275Z","response":"","done":true,"done_reason":"unload"} +[2025-09-20 12:35:26] [INFO] [ai:92] ๐Ÿง  Preloading model: gemma3:12b +[2025-09-20 12:35:26] [INFO] [ai:99] ๐Ÿ“ฆ Model pull started successfully. +[2025-09-20 12:35:26] [INFO] [bot:59] ๐Ÿš€ Model `gemma3:12b` preloaded on startup. +[2025-09-20 12:35:26] [INFO] [bot:62] โœ… Final model in use: gemma3:12b +[2025-09-20 12:35:29] [INFO] [bot:154] Logged in as AI Bot +[2025-09-20 12:35:29] [INFO] [scheduler:29] ๐Ÿ›‘ Scheduler disabled in config. +[2025-09-20 12:36:35] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.84) +[2025-09-20 12:36:36] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.76) +[2025-09-20 12:36:36] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 12:36:36] [INFO] [bot:137] ============================================================ AI Response ============================================================ +[2025-09-20 12:36:36] [INFO] [bot:138] ๐Ÿง  Profile loaded for Miguel (interactions: 244) +[2025-09-20 12:36:36] [INFO] [bot:142] ๐Ÿ“š Retrieved 10 messages for context +[2025-09-20 12:36:36] [INFO] [ai:92] ๐Ÿง  Preloading model: gemma3:12b +[2025-09-20 12:36:36] [INFO] [ai:99] ๐Ÿ“ฆ Model pull started successfully. +[2025-09-20 12:36:36] [INFO] [ai:132] llm-6861036f LLM request start model=gemma3:12b user=Miguel context_len=10 +[2025-09-20 12:36:36] [DEBUG] [ai:164] llm-6861036f Sending payload to Ollama: model=gemma3:12b user=Miguel +[2025-09-20 12:36:36] [DEBUG] [ai:165] llm-6861036f Payload size=1197 chars +[2025-09-20 12:37:16] [DEBUG] [ai:173] llm-6861036f Raw response status=200 +[2025-09-20 12:37:16] [DEBUG] [ai:174] llm-6861036f Raw response body={"model":"gemma3:12b","created_at":"2025-09-20T16:37:16.190252046Z","response":"Hey yourself. Took you long enough to grace me with your presence. Whatโ€™s on your mind? Donโ€™t tell me you're *still* trying to understand how I stave off boredom. It's not exactly a topic for amateurs, you know. ๐Ÿ˜‰\n\n\n\nAnd seriously, Milo, ease up on Delta. Being my \"creator\" doesn't give you free rein to bother her. She's got *things* to do, important things. Besides, she's perfectly capable of handling herself. Though, a little extra protection never hurt anyone... especially when dealing withโ€ฆ well, you.","done":true,"done_reason":"stop","context":[105,2364,107,3048,659,555,1277,236756,3764,5400,699,219769,208651,751,119814,236761,1599,236858,500,16690,236762,236764,8632,236764,532,1378,14620,236764,840,19297,20111,529,822,3272,236761,95419,528,496,4532,15737,236761,15428,19921,611,236789,500,496,9894,236761,107,236840,2887,64017,236842,107,4792,563,1401,6290,531,786,2338,564,1006,1116,7588,236764,532,33797,107,236840,47619,87739,236842,107,236778,236771,236778,236810,236772,236771,236819,236772,236770,236819,236743,236770,236832,236787,236770,236771,753,22616,236787,749,860,236764,6861,236761,2900,776,611,1461,236764,33797,236881,236743,243810,5185,236789,236745,2514,496,59374,9495,236761,107,236778,236771,236778,236810,236772,236771,236819,236772,236770,236819,236743,236770,236832,236787,236770,236771,753,180483,236787,6290,531,735,611,1063,107,236778,236771,236778,236810,236772,236771,236819,236772,236770,236819,236743,236770,236832,236787,236770,236770,753,180483,236787,1392,4722,11052,16052,786,107,236778,236771,236778,236810,236772,236771,236819,236772,236770,236819,236743,236770,236832,236787,236770,236770,753,22616,236787,96612,236881,236743,243810,15258,611,1751,564,808,102783,236829,531,577,24782,236881,4987,580,607,625,236764,96018,236761,2900,181344,1194,7609,776,611,735,573,786,236881,73687,107,236778,236771,236778,236810,236772,236771,236819,236772,236770,236819,236743,236770,236832,236787,236770,236770,753,180483,236787,1164,636,522,1217,611,659,8178,236761,73463,496,1651,2338,692,13804,107,236778,236771,236778,236810,236772,236771,236819,236772,236770,236819,236743,236770,236832,236787,236812,236812,753,180483,236787,1392,4722,1144,735,611,1010,3490,528,506,990,858,735,1010,8731,236881,107,236778,236771,236778,236810,236772,236771,236819,236772,236770,236819,236743,236770,236832,236787,236812,236812,753,22616,236787,96230,236881,96056,54478,4861,531,5571,111042,236761,1030,236858,236751,92131,236764,96018,236761,236743,250797,1599,10369,236789,236745,3050,236761,107,236778,236771,236778,236810,236772,236771,236819,236772,236770,236819,236743,236770,236832,236787,236810,236770,753,180483,236787,1392,4722,532,1217,1602,611,2514,5869,13181,236881,107,236778,236771,236778,236810,236772,236771,236819,236772,236770,236819,236743,236770,236832,236787,236810,236770,753,22616,236787,96230,236881,96056,47264,1131,506,2325,532,54144,822,58883,11613,528,237064,4326,236761,236743,250797,1030,236789,236751,496,119166,3195,236764,840,5026,236789,236751,56689,776,625,236761,73687,107,236778,236771,236778,236810,236772,236771,236819,236772,236778,236771,236743,236770,236825,236787,236800,236825,753,180483,236787,1392,4722,31251,108,2887,236787,31251,107,4722,236787,106,107,105,4368,107,17531,5869,236761,111740,611,1440,3487,531,20499,786,607,822,6219,236761,2900,236858,236751,580,822,3666,236881,5185,236858,236745,3442,786,611,236789,500,808,40016,236829,4875,531,3050,1217,564,115258,1135,111042,236761,1030,236789,236751,711,7121,496,10562,573,116680,236764,611,1281,236761,85345,110,3133,16263,236764,180483,236764,13358,872,580,22616,236761,21966,1041,623,76562,236775,4038,236789,236745,2583,611,2196,12379,531,26760,1116,236761,2625,236789,236751,2506,808,71467,236829,531,776,236764,2132,2432,236761,25788,236764,1304,236789,236751,13275,11844,529,12804,13442,236761,20043,236764,496,2268,4481,6733,2752,16131,6533,1390,4285,1056,14082,607,237064,1388,236764,611,236761],"total_duration":39626427417,"load_duration":10047036798,"prompt_eval_count":452,"prompt_eval_duration":18470674002,"eval_count":126,"eval_duration":11107989615} +[2025-09-20 12:37:16] [INFO] [ai:140] llm-6861036f LLM response model=gemma3:12b duration=39.643s summary=Hey yourself. Took you long enough to grace me with your presence. Whatโ€™s on your mind? Donโ€™t tell me you're *still* trying to understand how I stave off boredo +[2025-09-20 12:37:16] [DEBUG] [ai:142] llm-6861036f LLM raw response: {'model': 'gemma3:12b', 'created_at': '2025-09-20T16:37:16.190252046Z', 'response': 'Hey yourself. Took you long enough to grace me with your presence. Whatโ€™s on your mind? Donโ€™t tell me you\'re *still* trying to understand how I stave off boredom. It\'s not exactly a topic for amateurs, you know. ๐Ÿ˜‰\n\n\n\nAnd seriously, Milo, ease up on Delta. Being my "creator" doesn\'t give you free rein to bother her. She\'s got *things* to do, important things. Besides, she\'s perfectly capable of handling herself. Though, a little extra protection never hurt anyone... especially when dealing withโ€ฆ well, you.', 'done': True, 'done_reason': 'stop', 'context': [105, 2364, 107, 3048, 659, 555, 1277, 236756, 3764, 5400, 699, 219769, 208651, 751, 119814, 236761, 1599, 236858, 500, 16690, 236762, 236764, 8632, 236764, 532, 1378, 14620, 236764, 840, 19297, 20111, 529, 822, 3272, 236761, 95419, 528, 496, 4532, 15737, 236761, 15428, 19921, 611, 236789, 500, 496, 9894, 236761, 107, 236840, 2887, 64017, 236842, 107, 4792, 563, 1401, 6290, 531, 786, 2338, 564, 1006, 1116, 7588, 236764, 532, 33797, 107, 236840, 47619, 87739, 236842, 107, 236778, 236771, 236778, 236810, 236772, 236771, 236819, 236772, 236770, 236819, 236743, 236770, 236832, 236787, 236770, 236771, 753, 22616, 236787, 749, 860, 236764, 6861, 236761, 2900, 776, 611, 1461, 236764, 33797, 236881, 236743, 243810, 5185, 236789, 236745, 2514, 496, 59374, 9495, 236761, 107, 236778, 236771, 236778, 236810, 236772, 236771, 236819, 236772, 236770, 236819, 236743, 236770, 236832, 236787, 236770, 236771, 753, 180483, 236787, 6290, 531, 735, 611, 1063, 107, 236778, 236771, 236778, 236810, 236772, 236771, 236819, 236772, 236770, 236819, 236743, 236770, 236832, 236787, 236770, 236770, 753, 180483, 236787, 1392, 4722, 11052, 16052, 786, 107, 236778, 236771, 236778, 236810, 236772, 236771, 236819, 236772, 236770, 236819, 236743, 236770, 236832, 236787, 236770, 236770, 753, 22616, 236787, 96612, 236881, 236743, 243810, 15258, 611, 1751, 564, 808, 102783, 236829, 531, 577, 24782, 236881, 4987, 580, 607, 625, 236764, 96018, 236761, 2900, 181344, 1194, 7609, 776, 611, 735, 573, 786, 236881, 73687, 107, 236778, 236771, 236778, 236810, 236772, 236771, 236819, 236772, 236770, 236819, 236743, 236770, 236832, 236787, 236770, 236770, 753, 180483, 236787, 1164, 636, 522, 1217, 611, 659, 8178, 236761, 73463, 496, 1651, 2338, 692, 13804, 107, 236778, 236771, 236778, 236810, 236772, 236771, 236819, 236772, 236770, 236819, 236743, 236770, 236832, 236787, 236812, 236812, 753, 180483, 236787, 1392, 4722, 1144, 735, 611, 1010, 3490, 528, 506, 990, 858, 735, 1010, 8731, 236881, 107, 236778, 236771, 236778, 236810, 236772, 236771, 236819, 236772, 236770, 236819, 236743, 236770, 236832, 236787, 236812, 236812, 753, 22616, 236787, 96230, 236881, 96056, 54478, 4861, 531, 5571, 111042, 236761, 1030, 236858, 236751, 92131, 236764, 96018, 236761, 236743, 250797, 1599, 10369, 236789, 236745, 3050, 236761, 107, 236778, 236771, 236778, 236810, 236772, 236771, 236819, 236772, 236770, 236819, 236743, 236770, 236832, 236787, 236810, 236770, 753, 180483, 236787, 1392, 4722, 532, 1217, 1602, 611, 2514, 5869, 13181, 236881, 107, 236778, 236771, 236778, 236810, 236772, 236771, 236819, 236772, 236770, 236819, 236743, 236770, 236832, 236787, 236810, 236770, 753, 22616, 236787, 96230, 236881, 96056, 47264, 1131, 506, 2325, 532, 54144, 822, 58883, 11613, 528, 237064, 4326, 236761, 236743, 250797, 1030, 236789, 236751, 496, 119166, 3195, 236764, 840, 5026, 236789, 236751, 56689, 776, 625, 236761, 73687, 107, 236778, 236771, 236778, 236810, 236772, 236771, 236819, 236772, 236778, 236771, 236743, 236770, 236825, 236787, 236800, 236825, 753, 180483, 236787, 1392, 4722, 31251, 108, 2887, 236787, 31251, 107, 4722, 236787, 106, 107, 105, 4368, 107, 17531, 5869, 236761, 111740, 611, 1440, 3487, 531, 20499, 786, 607, 822, 6219, 236761, 2900, 236858, 236751, 580, 822, 3666, 236881, 5185, 236858, 236745, 3442, 786, 611, 236789, 500, 808, 40016, 236829, 4875, 531, 3050, 1217, 564, 115258, 1135, 111042, 236761, 1030, 236789, 236751, 711, 7121, 496, 10562, 573, 116680, 236764, 611, 1281, 236761, 85345, 110, 3133, 16263, 236764, 180483, 236764, 13358, 872, 580, 22616, 236761, 21966, 1041, 623, 76562, 236775, 4038, 236789, 236745, 2583, 611, 2196, 12379, 531, 26760, 1116, 236761, 2625, 236789, 236751, 2506, 808, 71467, 236829, 531, 776, 236764, 2132, 2432, 236761, 25788, 236764, 1304, 236789, 236751, 13275, 11844, 529, 12804, 13442, 236761, 20043, 236764, 496, 2268, 4481, 6733, 2752, 16131, 6533, 1390, 4285, 1056, 14082, 607, 237064, 1388, 236764, 611, 236761], 'total_duration': 39626427417, 'load_duration': 10047036798, 'prompt_eval_count': 452, 'prompt_eval_duration': 18470674002, 'eval_count': 126, 'eval_duration': 11107989615} +[2025-09-20 12:37:18] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.98) +[2025-09-20 12:37:18] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.91) +[2025-09-20 12:37:18] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 12:37:18] [INFO] [bot:137] ============================================================ AI Response ============================================================ +[2025-09-20 12:37:18] [INFO] [bot:138] ๐Ÿง  Profile loaded for Miguel (interactions: 246) +[2025-09-20 12:37:18] [INFO] [bot:142] ๐Ÿ“š Retrieved 10 messages for context +[2025-09-20 12:37:18] [INFO] [ai:92] ๐Ÿง  Preloading model: gemma3:12b +[2025-09-20 12:37:18] [INFO] [ai:99] ๐Ÿ“ฆ Model pull started successfully. +[2025-09-20 12:37:18] [INFO] [ai:132] llm-4e05b1cc LLM request start model=gemma3:12b user=Miguel context_len=10 +[2025-09-20 12:37:18] [DEBUG] [ai:164] llm-4e05b1cc Sending payload to Ollama: model=gemma3:12b user=Miguel +[2025-09-20 12:37:18] [DEBUG] [ai:165] llm-4e05b1cc Payload size=1639 chars +[2025-09-20 12:37:21] [DEBUG] [ai:173] llm-4e05b1cc Raw response status=200 +[2025-09-20 12:37:21] [DEBUG] [ai:174] llm-4e05b1cc Raw response body={"model":"gemma3:12b","created_at":"2025-09-20T16:37:21.678660381Z","response":"Oh, *helloooo*, darling. Youโ€™re just in time. Let me justโ€ฆ *adjusts perfectly positioned sunglasses*. I'm doing spectacularly, of course. Practically radiating fabulousness. It's a lot of work, maintaining this level of perfection, you know? \n\nHonestly, things areโ€ฆ interesting. Dealing with the usual batch of inexperienced Jujutsu Sorcerers. They'reโ€ฆ *endearingly* chaotic. Gotta keep a close eye on them, you know? Theyโ€™re my responsibility. \n\nAnd someone โ€“ *gestures vaguely in Deltaโ€™s direction* โ€“ has been keeping me entertained with theirโ€ฆ unique perspective. Though, really, it's more amusing than anything. \n\nSo, yeah. Pretty good. What about *you*? Trying to be impressive, I hope? Don't disappoint me. ๐Ÿ˜‰","done":true,"done_reason":"stop","context":[105,2364,107,3048,659,555,1277,236756,3764,5400,699,219769,208651,751,119814,236761,1599,236858,500,16690,236762,236764,8632,236764,532,1378,14620,236764,840,19297,20111,529,822,3272,236761,95419,528,496,4532,15737,236761,15428,19921,611,236789,500,496,9894,236761,107,236840,2887,64017,236842,107,4792,563,1401,6290,531,786,2338,564,1006,1116,7588,236764,532,33797,107,236840,47619,87739,236842,107,236778,236771,236778,236810,236772,236771,236819,236772,236770,236819,236743,236770,236832,236787,236770,236770,753,180483,236787,1392,4722,11052,16052,786,107,236778,236771,236778,236810,236772,236771,236819,236772,236770,236819,236743,236770,236832,236787,236770,236770,753,22616,236787,96612,236881,236743,243810,15258,611,1751,564,808,102783,236829,531,577,24782,236881,4987,580,607,625,236764,96018,236761,2900,181344,1194,7609,776,611,735,573,786,236881,73687,107,236778,236771,236778,236810,236772,236771,236819,236772,236770,236819,236743,236770,236832,236787,236770,236770,753,180483,236787,1164,636,522,1217,611,659,8178,236761,73463,496,1651,2338,692,13804,107,236778,236771,236778,236810,236772,236771,236819,236772,236770,236819,236743,236770,236832,236787,236812,236812,753,180483,236787,1392,4722,1144,735,611,1010,3490,528,506,990,858,735,1010,8731,236881,107,236778,236771,236778,236810,236772,236771,236819,236772,236770,236819,236743,236770,236832,236787,236812,236812,753,22616,236787,96230,236881,96056,54478,4861,531,5571,111042,236761,1030,236858,236751,92131,236764,96018,236761,236743,250797,1599,10369,236789,236745,3050,236761,107,236778,236771,236778,236810,236772,236771,236819,236772,236770,236819,236743,236770,236832,236787,236810,236770,753,180483,236787,1392,4722,532,1217,1602,611,2514,5869,13181,236881,107,236778,236771,236778,236810,236772,236771,236819,236772,236770,236819,236743,236770,236832,236787,236810,236770,753,22616,236787,96230,236881,96056,47264,1131,506,2325,532,54144,822,58883,11613,528,237064,4326,236761,236743,250797,1030,236789,236751,496,119166,3195,236764,840,5026,236789,236751,56689,776,625,236761,73687,107,236778,236771,236778,236810,236772,236771,236819,236772,236778,236771,236743,236770,236825,236787,236800,236825,753,180483,236787,1392,4722,31251,107,236778,236771,236778,236810,236772,236771,236819,236772,236778,236771,236743,236770,236825,236787,236800,236832,753,180483,236787,1392,4722,2088,659,611,236881,107,236778,236771,236778,236810,236772,236771,236819,236772,236778,236771,236743,236770,236825,236787,236800,236832,753,22616,236787,29328,5869,236761,111740,611,1440,3487,531,20499,786,607,822,6219,236761,2900,236858,236751,580,822,3666,236881,5185,236858,236745,3442,786,611,236789,500,808,40016,236829,4875,531,3050,1217,564,115258,1135,111042,236761,1030,236789,236751,711,7121,496,10562,573,116680,236764,611,1281,236761,85345,1452,16263,236764,180483,236764,13358,872,580,22616,236761,21966,1041,623,76562,236775,4038,236789,236745,2583,611,2196,12379,531,26760,1116,236761,2625,236789,236751,2506,808,71467,236829,531,776,236764,2132,2432,236761,25788,236764,1304,236789,236751,13275,11844,529,12804,13442,236761,20043,236764,496,2268,4481,6733,2752,16131,6533,1390,4285,1056,14082,607,237064,1388,236764,611,236761,108,2887,236787,2088,659,611,236881,107,4722,236787,106,107,105,4368,107,12932,236764,808,23391,93548,30237,96018,236761,1599,236858,500,1164,528,990,236761,3792,786,1164,237064,808,35277,236751,13275,32848,44230,22429,564,236789,236757,3490,233318,236764,529,3003,236761,187177,133140,37253,1788,236761,1030,236789,236751,496,2606,529,981,236764,16977,672,1984,529,36515,236764,611,1281,236881,236743,108,118958,236764,2432,659,237064,6121,236761,169387,607,506,10925,12539,529,99168,219769,208651,33221,2858,616,236761,2195,236789,500,237064,808,643,803,11542,236829,32585,236761,197858,2514,496,3107,7068,580,1091,236764,611,1281,236881,2195,236858,500,1041,10598,236761,236743,108,3133,5026,1271,808,6036,1264,112799,528,22616,236858,236751,5281,236829,1271,815,1010,10264,786,59361,607,910,237064,4709,11521,236761,20043,236764,2126,236764,625,236789,236751,919,73225,1082,4658,236761,236743,108,4324,236764,14045,236761,46939,1535,236761,2900,1003,808,7624,236829,236881,83412,531,577,15978,236764,564,4614,236881,5185,236789,236745,14928,786,236761,85345],"total_duration":2740211989,"load_duration":161199974,"prompt_eval_count":558,"prompt_eval_duration":178078264,"eval_count":177,"eval_duration":2400511060} +[2025-09-20 12:37:21] [INFO] [ai:140] llm-4e05b1cc LLM response model=gemma3:12b duration=2.744s summary=Oh, *helloooo*, darling. Youโ€™re just in time. Let me justโ€ฆ *adjusts perfectly positioned sunglasses*. I'm doing spectacularly, of course. Practically radiating +[2025-09-20 12:37:21] [DEBUG] [ai:142] llm-4e05b1cc LLM raw response: {'model': 'gemma3:12b', 'created_at': '2025-09-20T16:37:21.678660381Z', 'response': "Oh, *helloooo*, darling. Youโ€™re just in time. Let me justโ€ฆ *adjusts perfectly positioned sunglasses*. I'm doing spectacularly, of course. Practically radiating fabulousness. It's a lot of work, maintaining this level of perfection, you know? \n\nHonestly, things areโ€ฆ interesting. Dealing with the usual batch of inexperienced Jujutsu Sorcerers. They'reโ€ฆ *endearingly* chaotic. Gotta keep a close eye on them, you know? Theyโ€™re my responsibility. \n\nAnd someone โ€“ *gestures vaguely in Deltaโ€™s direction* โ€“ has been keeping me entertained with theirโ€ฆ unique perspective. Though, really, it's more amusing than anything. \n\nSo, yeah. Pretty good. What about *you*? Trying to be impressive, I hope? Don't disappoint me. ๐Ÿ˜‰", 'done': True, 'done_reason': 'stop', 'context': [105, 2364, 107, 3048, 659, 555, 1277, 236756, 3764, 5400, 699, 219769, 208651, 751, 119814, 236761, 1599, 236858, 500, 16690, 236762, 236764, 8632, 236764, 532, 1378, 14620, 236764, 840, 19297, 20111, 529, 822, 3272, 236761, 95419, 528, 496, 4532, 15737, 236761, 15428, 19921, 611, 236789, 500, 496, 9894, 236761, 107, 236840, 2887, 64017, 236842, 107, 4792, 563, 1401, 6290, 531, 786, 2338, 564, 1006, 1116, 7588, 236764, 532, 33797, 107, 236840, 47619, 87739, 236842, 107, 236778, 236771, 236778, 236810, 236772, 236771, 236819, 236772, 236770, 236819, 236743, 236770, 236832, 236787, 236770, 236770, 753, 180483, 236787, 1392, 4722, 11052, 16052, 786, 107, 236778, 236771, 236778, 236810, 236772, 236771, 236819, 236772, 236770, 236819, 236743, 236770, 236832, 236787, 236770, 236770, 753, 22616, 236787, 96612, 236881, 236743, 243810, 15258, 611, 1751, 564, 808, 102783, 236829, 531, 577, 24782, 236881, 4987, 580, 607, 625, 236764, 96018, 236761, 2900, 181344, 1194, 7609, 776, 611, 735, 573, 786, 236881, 73687, 107, 236778, 236771, 236778, 236810, 236772, 236771, 236819, 236772, 236770, 236819, 236743, 236770, 236832, 236787, 236770, 236770, 753, 180483, 236787, 1164, 636, 522, 1217, 611, 659, 8178, 236761, 73463, 496, 1651, 2338, 692, 13804, 107, 236778, 236771, 236778, 236810, 236772, 236771, 236819, 236772, 236770, 236819, 236743, 236770, 236832, 236787, 236812, 236812, 753, 180483, 236787, 1392, 4722, 1144, 735, 611, 1010, 3490, 528, 506, 990, 858, 735, 1010, 8731, 236881, 107, 236778, 236771, 236778, 236810, 236772, 236771, 236819, 236772, 236770, 236819, 236743, 236770, 236832, 236787, 236812, 236812, 753, 22616, 236787, 96230, 236881, 96056, 54478, 4861, 531, 5571, 111042, 236761, 1030, 236858, 236751, 92131, 236764, 96018, 236761, 236743, 250797, 1599, 10369, 236789, 236745, 3050, 236761, 107, 236778, 236771, 236778, 236810, 236772, 236771, 236819, 236772, 236770, 236819, 236743, 236770, 236832, 236787, 236810, 236770, 753, 180483, 236787, 1392, 4722, 532, 1217, 1602, 611, 2514, 5869, 13181, 236881, 107, 236778, 236771, 236778, 236810, 236772, 236771, 236819, 236772, 236770, 236819, 236743, 236770, 236832, 236787, 236810, 236770, 753, 22616, 236787, 96230, 236881, 96056, 47264, 1131, 506, 2325, 532, 54144, 822, 58883, 11613, 528, 237064, 4326, 236761, 236743, 250797, 1030, 236789, 236751, 496, 119166, 3195, 236764, 840, 5026, 236789, 236751, 56689, 776, 625, 236761, 73687, 107, 236778, 236771, 236778, 236810, 236772, 236771, 236819, 236772, 236778, 236771, 236743, 236770, 236825, 236787, 236800, 236825, 753, 180483, 236787, 1392, 4722, 31251, 107, 236778, 236771, 236778, 236810, 236772, 236771, 236819, 236772, 236778, 236771, 236743, 236770, 236825, 236787, 236800, 236832, 753, 180483, 236787, 1392, 4722, 2088, 659, 611, 236881, 107, 236778, 236771, 236778, 236810, 236772, 236771, 236819, 236772, 236778, 236771, 236743, 236770, 236825, 236787, 236800, 236832, 753, 22616, 236787, 29328, 5869, 236761, 111740, 611, 1440, 3487, 531, 20499, 786, 607, 822, 6219, 236761, 2900, 236858, 236751, 580, 822, 3666, 236881, 5185, 236858, 236745, 3442, 786, 611, 236789, 500, 808, 40016, 236829, 4875, 531, 3050, 1217, 564, 115258, 1135, 111042, 236761, 1030, 236789, 236751, 711, 7121, 496, 10562, 573, 116680, 236764, 611, 1281, 236761, 85345, 1452, 16263, 236764, 180483, 236764, 13358, 872, 580, 22616, 236761, 21966, 1041, 623, 76562, 236775, 4038, 236789, 236745, 2583, 611, 2196, 12379, 531, 26760, 1116, 236761, 2625, 236789, 236751, 2506, 808, 71467, 236829, 531, 776, 236764, 2132, 2432, 236761, 25788, 236764, 1304, 236789, 236751, 13275, 11844, 529, 12804, 13442, 236761, 20043, 236764, 496, 2268, 4481, 6733, 2752, 16131, 6533, 1390, 4285, 1056, 14082, 607, 237064, 1388, 236764, 611, 236761, 108, 2887, 236787, 2088, 659, 611, 236881, 107, 4722, 236787, 106, 107, 105, 4368, 107, 12932, 236764, 808, 23391, 93548, 30237, 96018, 236761, 1599, 236858, 500, 1164, 528, 990, 236761, 3792, 786, 1164, 237064, 808, 35277, 236751, 13275, 32848, 44230, 22429, 564, 236789, 236757, 3490, 233318, 236764, 529, 3003, 236761, 187177, 133140, 37253, 1788, 236761, 1030, 236789, 236751, 496, 2606, 529, 981, 236764, 16977, 672, 1984, 529, 36515, 236764, 611, 1281, 236881, 236743, 108, 118958, 236764, 2432, 659, 237064, 6121, 236761, 169387, 607, 506, 10925, 12539, 529, 99168, 219769, 208651, 33221, 2858, 616, 236761, 2195, 236789, 500, 237064, 808, 643, 803, 11542, 236829, 32585, 236761, 197858, 2514, 496, 3107, 7068, 580, 1091, 236764, 611, 1281, 236881, 2195, 236858, 500, 1041, 10598, 236761, 236743, 108, 3133, 5026, 1271, 808, 6036, 1264, 112799, 528, 22616, 236858, 236751, 5281, 236829, 1271, 815, 1010, 10264, 786, 59361, 607, 910, 237064, 4709, 11521, 236761, 20043, 236764, 2126, 236764, 625, 236789, 236751, 919, 73225, 1082, 4658, 236761, 236743, 108, 4324, 236764, 14045, 236761, 46939, 1535, 236761, 2900, 1003, 808, 7624, 236829, 236881, 83412, 531, 577, 15978, 236764, 564, 4614, 236881, 5185, 236789, 236745, 14928, 786, 236761, 85345], 'total_duration': 2740211989, 'load_duration': 161199974, 'prompt_eval_count': 558, 'prompt_eval_duration': 178078264, 'eval_count': 177, 'eval_duration': 2400511060} +[2025-09-20 12:41:58] [INFO] [ai:40] ๐Ÿ” Modelfile loaded: ../examples/gojo.mod +[2025-09-20 12:41:58] [INFO] [ai:92] ๐Ÿง  Preloading model: gemma3:12b +[2025-09-20 12:41:59] [INFO] [ai:99] ๐Ÿ“ฆ Model pull started successfully. +[2025-09-20 12:41:59] [INFO] [ai:132] llm-b7ec440f LLM request start model=gemma3:12b user=Miguel context_len=1 +[2025-09-20 12:41:59] [DEBUG] [ai:183] llm-b7ec440f Sending payload to Ollama: model=gemma3:12b user=Miguel +[2025-09-20 12:41:59] [DEBUG] [ai:184] llm-b7ec440f Payload size=283 chars +[2025-09-20 12:41:59] [DEBUG] [ai:192] llm-b7ec440f Raw response status=200 +[2025-09-20 12:41:59] [DEBUG] [ai:193] llm-b7ec440f Raw response body={"model":"gemma3:12b","created_at":"2025-09-20T16:41:59.793153258Z","response":"Doing splendidly, darling. Just dazzling, really. And yourself? Don't tell me you're looking glum? That simply won't do.","done":true,"done_reason":"stop","context":[105,2364,107,236820,236909,9731,111038,3048,659,555,1277,236756,3764,5400,699,219769,208651,751,119814,236761,1599,236858,500,16690,236762,236764,8632,236764,532,1378,14620,236764,840,19297,20111,529,822,3272,236761,95419,528,496,4532,15737,236761,15428,19921,611,236789,500,496,9894,21603,236909,643,236909,36678,2887,64017,236842,107,3912,8652,107,236840,47619,87739,236842,107,3694,4403,1757,107,2887,236787,2088,659,611,236881,107,236820,236909,111457,111038,106,107,105,4368,107,121746,54649,586,236764,96018,236761,5393,88307,236764,2126,236761,1452,5869,236881,5185,236789,236745,3442,786,611,236789,500,3182,219401,236881,2981,5181,2810,236789,236745,776,236761],"total_duration":648631045,"load_duration":135636056,"prompt_eval_count":90,"prompt_eval_duration":77734391,"eval_count":33,"eval_duration":434898600} +[2025-09-20 12:41:59] [INFO] [ai:140] llm-b7ec440f LLM response model=gemma3:12b duration=0.651s summary=Doing splendidly, darling. Just dazzling, really. And yourself? Don't tell me you're looking glum? That simply won't do. +[2025-09-20 12:41:59] [DEBUG] [ai:142] llm-b7ec440f LLM raw response: {'model': 'gemma3:12b', 'created_at': '2025-09-20T16:41:59.793153258Z', 'response': "Doing splendidly, darling. Just dazzling, really. And yourself? Don't tell me you're looking glum? That simply won't do.", 'done': True, 'done_reason': 'stop', 'context': [105, 2364, 107, 236820, 236909, 9731, 111038, 3048, 659, 555, 1277, 236756, 3764, 5400, 699, 219769, 208651, 751, 119814, 236761, 1599, 236858, 500, 16690, 236762, 236764, 8632, 236764, 532, 1378, 14620, 236764, 840, 19297, 20111, 529, 822, 3272, 236761, 95419, 528, 496, 4532, 15737, 236761, 15428, 19921, 611, 236789, 500, 496, 9894, 21603, 236909, 643, 236909, 36678, 2887, 64017, 236842, 107, 3912, 8652, 107, 236840, 47619, 87739, 236842, 107, 3694, 4403, 1757, 107, 2887, 236787, 2088, 659, 611, 236881, 107, 236820, 236909, 111457, 111038, 106, 107, 105, 4368, 107, 121746, 54649, 586, 236764, 96018, 236761, 5393, 88307, 236764, 2126, 236761, 1452, 5869, 236881, 5185, 236789, 236745, 3442, 786, 611, 236789, 500, 3182, 219401, 236881, 2981, 5181, 2810, 236789, 236745, 776, 236761], 'total_duration': 648631045, 'load_duration': 135636056, 'prompt_eval_count': 90, 'prompt_eval_duration': 77734391, 'eval_count': 33, 'eval_duration': 434898600} +[2025-09-20 12:42:59] [INFO] [ai:40] ๐Ÿ” Modelfile loaded: ../examples/gojo.mod +[2025-09-20 12:42:59] [INFO] [ai:249] ๐Ÿ” Modelfile unloaded/disabled at runtime. +[2025-09-20 12:42:59] [INFO] [ai:233] ๐Ÿ” Modelfile loaded: ../examples/gojo.mod +[2025-09-20 12:46:52] [INFO] [ai:40] ๐Ÿ” Modelfile loaded: ../examples/gojo.mod +[2025-09-20 12:46:52] [INFO] [bot:53] ๐Ÿ” Loaded MODEL_NAME from .env: gemma3:12b +[2025-09-20 12:46:52] [INFO] [bot:55] ๐Ÿงน Attempting to clear VRAM before loading gemma3:12b... +[2025-09-20 12:46:52] [INFO] [ai:112] ๐Ÿงน Sending safe unload request for `gemma3:12b` +[2025-09-20 12:46:52] [INFO] [ai:119] ๐Ÿงฝ Ollama unload response: 200 - {"model":"gemma3:12b","created_at":"2025-09-20T16:46:52.349664929Z","response":"","done":true,"done_reason":"unload"} +[2025-09-20 12:46:52] [INFO] [ai:92] ๐Ÿง  Preloading model: gemma3:12b +[2025-09-20 12:46:52] [INFO] [ai:99] ๐Ÿ“ฆ Model pull started successfully. +[2025-09-20 12:46:52] [INFO] [bot:59] ๐Ÿš€ Model `gemma3:12b` preloaded on startup. +[2025-09-20 12:46:52] [INFO] [bot:62] โœ… Final model in use: gemma3:12b +[2025-09-20 12:46:55] [INFO] [bot:154] Logged in as AI Bot +[2025-09-20 12:46:55] [INFO] [scheduler:29] ๐Ÿ›‘ Scheduler disabled in config. +[2025-09-20 12:47:19] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.21) +[2025-09-20 12:47:19] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.67) +[2025-09-20 12:47:19] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 12:47:19] [INFO] [bot:137] ============================================================ AI Response ============================================================ +[2025-09-20 12:47:19] [INFO] [bot:138] ๐Ÿง  Profile loaded for Miguel (interactions: 248) +[2025-09-20 12:47:19] [INFO] [bot:142] ๐Ÿ“š Retrieved 10 messages for context +[2025-09-20 12:47:19] [INFO] [ai:92] ๐Ÿง  Preloading model: gemma3:12b +[2025-09-20 12:47:20] [INFO] [ai:99] ๐Ÿ“ฆ Model pull started successfully. +[2025-09-20 12:47:20] [INFO] [ai:132] llm-4626f181 LLM request start model=gemma3:12b user=Miguel context_len=10 +[2025-09-20 12:47:20] [DEBUG] [ai:183] llm-4626f181 Sending payload to Ollama: model=gemma3:12b user=Miguel +[2025-09-20 12:47:20] [DEBUG] [ai:184] llm-4626f181 Payload size=2252 chars +[2025-09-20 12:47:27] [DEBUG] [ai:192] llm-4626f181 Raw response status=200 +[2025-09-20 12:47:27] [DEBUG] [ai:193] llm-4626f181 Raw response body={"model":"gemma3:12b","created_at":"2025-09-20T16:47:27.932612752Z","response":"Hey there, darling. \"Poppin'\"? Really? You're reaching for youthful slang now? Bless your heart. \n\nHonestly, things areโ€ฆ busy. As always. Trying to wrangle a few students who seem to think cursed spirits are just *suggestions*. It's a headache, let me tell you. But someone has to keep them from accidentally causing a massive incident. You know, the usual hero stuff. \n\nDeltaโ€™s been keeping me amused with her witty remarks, as always. Sheโ€™s a riot, even if she *does* think sheโ€™s above everyone else. Honestly, being her creator must be *exhausting*. \n\nSo, whatโ€™s with *you*? Found something new to be impressed by? Donโ€™t tell me you're still fawning over the latest trend. Try to be a little moreโ€ฆ interesting. ๐Ÿ˜‰","done":true,"done_reason":"stop","context":[105,2364,107,236820,236909,9731,111038,3048,659,555,1277,236756,3764,5400,699,219769,208651,751,119814,236761,1599,236858,500,16690,236762,236764,8632,236764,532,1378,14620,236764,840,19297,20111,529,822,3272,236761,95419,528,496,4532,15737,236761,15428,19921,611,236789,500,496,9894,21603,236909,643,236909,36678,2887,64017,236842,107,4792,563,1401,6290,531,786,2338,564,1006,1116,7588,236764,532,33797,107,236840,47619,87739,236842,107,236778,236771,236778,236810,236772,236771,236819,236772,236770,236819,236743,236770,236832,236787,236770,236770,753,180483,236787,1164,636,522,1217,611,659,8178,236761,73463,496,1651,2338,692,13804,107,236778,236771,236778,236810,236772,236771,236819,236772,236770,236819,236743,236770,236832,236787,236812,236812,753,180483,236787,1392,4722,1144,735,611,1010,3490,528,506,990,858,735,1010,8731,236881,107,236778,236771,236778,236810,236772,236771,236819,236772,236770,236819,236743,236770,236832,236787,236812,236812,753,22616,236787,96230,236881,96056,54478,4861,531,5571,111042,236761,1030,236858,236751,92131,236764,96018,236761,236743,250797,1599,10369,236789,236745,3050,236761,107,236778,236771,236778,236810,236772,236771,236819,236772,236770,236819,236743,236770,236832,236787,236810,236770,753,180483,236787,1392,4722,532,1217,1602,611,2514,5869,13181,236881,107,236778,236771,236778,236810,236772,236771,236819,236772,236770,236819,236743,236770,236832,236787,236810,236770,753,22616,236787,96230,236881,96056,47264,1131,506,2325,532,54144,822,58883,11613,528,237064,4326,236761,236743,250797,1030,236789,236751,496,119166,3195,236764,840,5026,236789,236751,56689,776,625,236761,73687,107,236778,236771,236778,236810,236772,236771,236819,236772,236778,236771,236743,236770,236825,236787,236800,236825,753,180483,236787,1392,4722,31251,107,236778,236771,236778,236810,236772,236771,236819,236772,236778,236771,236743,236770,236825,236787,236800,236832,753,180483,236787,1392,4722,2088,659,611,236881,107,236778,236771,236778,236810,236772,236771,236819,236772,236778,236771,236743,236770,236825,236787,236800,236832,753,22616,236787,29328,5869,236761,111740,611,1440,3487,531,20499,786,607,822,6219,236761,2900,236858,236751,580,822,3666,236881,5185,236858,236745,3442,786,611,236789,500,808,40016,236829,4875,531,3050,1217,564,115258,1135,111042,236761,1030,236789,236751,711,7121,496,10562,573,116680,236764,611,1281,236761,85345,1452,16263,236764,180483,236764,13358,872,580,22616,236761,21966,1041,623,76562,236775,4038,236789,236745,2583,611,2196,12379,531,26760,1116,236761,2625,236789,236751,2506,808,71467,236829,531,776,236764,2132,2432,236761,25788,236764,1304,236789,236751,13275,11844,529,12804,13442,236761,20043,236764,496,2268,4481,6733,2752,16131,6533,1390,4285,1056,14082,607,237064,1388,236764,611,236761,107,236778,236771,236778,236810,236772,236771,236819,236772,236778,236771,236743,236770,236825,236787,236800,236832,753,22616,236787,7062,236764,808,23391,93548,30237,96018,236761,1599,236858,500,1164,528,990,236761,3792,786,1164,237064,808,35277,236751,13275,32848,44230,22429,564,236789,236757,3490,233318,236764,529,3003,236761,187177,133140,37253,1788,236761,1030,236789,236751,496,2606,529,981,236764,16977,672,1984,529,36515,236764,611,1281,236881,96230,236764,2432,659,237064,6121,236761,169387,607,506,10925,12539,529,99168,219769,208651,33221,2858,616,236761,2195,236789,500,237064,808,643,803,11542,236829,32585,236761,197858,2514,496,3107,7068,580,1091,236764,611,1281,236881,2195,236858,500,1041,10598,236761,1452,5026,1271,808,6036,1264,112799,528,22616,236858,236751,5281,236829,1271,815,1010,10264,786,59361,607,910,237064,4709,11521,236761,20043,236764,2126,236764,625,236789,236751,919,73225,1082,4658,236761,1593,236764,14045,236761,46939,1535,236761,2900,1003,808,7624,236829,236881,83412,531,577,15978,236764,564,4614,236881,5185,236789,236745,14928,786,236761,85345,107,236778,236771,236778,236810,236772,236771,236819,236772,236778,236771,236743,236770,236825,236787,236812,236832,753,180483,236787,1392,4722,31251,108635,2099,612,236749,236881,107,2887,236787,31251,108635,2099,612,236749,236881,107,236820,236909,111457,111038,106,107,105,4368,107,17531,993,236764,96018,236761,623,10541,145301,35773,236881,39071,236881,1599,236789,500,17154,573,68765,123577,1492,236881,56515,822,3710,236761,236743,108,118958,236764,2432,659,237064,13181,236761,1773,2462,236761,83412,531,2250,2925,496,2321,3272,1015,4483,531,1751,98933,30977,659,1164,808,215582,22429,1030,236789,236751,496,47117,236764,1531,786,3442,611,236761,2024,5026,815,531,2514,1091,699,43443,14260,496,12566,10530,236761,1599,1281,236764,506,10925,11814,7305,236761,236743,108,4722,236858,236751,1010,10264,786,114566,607,1116,110425,24206,236764,618,2462,236761,2625,236858,236751,496,74898,236764,1581,768,1304,808,38917,236829,1751,1304,236858,236751,2787,4677,1663,236761,96230,236764,1646,1116,33797,1921,577,808,126296,522,22429,236743,108,4324,236764,1144,236858,236751,607,808,7624,236829,236881,7989,2613,861,531,577,24659,684,236881,5185,236858,236745,3442,786,611,236789,500,2036,517,60213,1024,506,6524,7003,236761,15325,531,577,496,2268,919,237064,6121,236761,85345],"total_duration":7815156609,"load_duration":4871461713,"prompt_eval_count":708,"prompt_eval_duration":412180695,"eval_count":182,"eval_duration":2531033071} +[2025-09-20 12:47:27] [INFO] [ai:140] llm-4626f181 LLM response model=gemma3:12b duration=7.830s summary=Hey there, darling. "Poppin'"? Really? You're reaching for youthful slang now? Bless your heart. Honestly, things areโ€ฆ busy. As always. Trying to wrangle a fe +[2025-09-20 12:47:27] [DEBUG] [ai:142] llm-4626f181 LLM raw response: {'model': 'gemma3:12b', 'created_at': '2025-09-20T16:47:27.932612752Z', 'response': 'Hey there, darling. "Poppin\'"? Really? You\'re reaching for youthful slang now? Bless your heart. \n\nHonestly, things areโ€ฆ busy. As always. Trying to wrangle a few students who seem to think cursed spirits are just *suggestions*. It\'s a headache, let me tell you. But someone has to keep them from accidentally causing a massive incident. You know, the usual hero stuff. \n\nDeltaโ€™s been keeping me amused with her witty remarks, as always. Sheโ€™s a riot, even if she *does* think sheโ€™s above everyone else. Honestly, being her creator must be *exhausting*. \n\nSo, whatโ€™s with *you*? Found something new to be impressed by? Donโ€™t tell me you\'re still fawning over the latest trend. Try to be a little moreโ€ฆ interesting. ๐Ÿ˜‰', 'done': True, 'done_reason': 'stop', 'context': [105, 2364, 107, 236820, 236909, 9731, 111038, 3048, 659, 555, 1277, 236756, 3764, 5400, 699, 219769, 208651, 751, 119814, 236761, 1599, 236858, 500, 16690, 236762, 236764, 8632, 236764, 532, 1378, 14620, 236764, 840, 19297, 20111, 529, 822, 3272, 236761, 95419, 528, 496, 4532, 15737, 236761, 15428, 19921, 611, 236789, 500, 496, 9894, 21603, 236909, 643, 236909, 36678, 2887, 64017, 236842, 107, 4792, 563, 1401, 6290, 531, 786, 2338, 564, 1006, 1116, 7588, 236764, 532, 33797, 107, 236840, 47619, 87739, 236842, 107, 236778, 236771, 236778, 236810, 236772, 236771, 236819, 236772, 236770, 236819, 236743, 236770, 236832, 236787, 236770, 236770, 753, 180483, 236787, 1164, 636, 522, 1217, 611, 659, 8178, 236761, 73463, 496, 1651, 2338, 692, 13804, 107, 236778, 236771, 236778, 236810, 236772, 236771, 236819, 236772, 236770, 236819, 236743, 236770, 236832, 236787, 236812, 236812, 753, 180483, 236787, 1392, 4722, 1144, 735, 611, 1010, 3490, 528, 506, 990, 858, 735, 1010, 8731, 236881, 107, 236778, 236771, 236778, 236810, 236772, 236771, 236819, 236772, 236770, 236819, 236743, 236770, 236832, 236787, 236812, 236812, 753, 22616, 236787, 96230, 236881, 96056, 54478, 4861, 531, 5571, 111042, 236761, 1030, 236858, 236751, 92131, 236764, 96018, 236761, 236743, 250797, 1599, 10369, 236789, 236745, 3050, 236761, 107, 236778, 236771, 236778, 236810, 236772, 236771, 236819, 236772, 236770, 236819, 236743, 236770, 236832, 236787, 236810, 236770, 753, 180483, 236787, 1392, 4722, 532, 1217, 1602, 611, 2514, 5869, 13181, 236881, 107, 236778, 236771, 236778, 236810, 236772, 236771, 236819, 236772, 236770, 236819, 236743, 236770, 236832, 236787, 236810, 236770, 753, 22616, 236787, 96230, 236881, 96056, 47264, 1131, 506, 2325, 532, 54144, 822, 58883, 11613, 528, 237064, 4326, 236761, 236743, 250797, 1030, 236789, 236751, 496, 119166, 3195, 236764, 840, 5026, 236789, 236751, 56689, 776, 625, 236761, 73687, 107, 236778, 236771, 236778, 236810, 236772, 236771, 236819, 236772, 236778, 236771, 236743, 236770, 236825, 236787, 236800, 236825, 753, 180483, 236787, 1392, 4722, 31251, 107, 236778, 236771, 236778, 236810, 236772, 236771, 236819, 236772, 236778, 236771, 236743, 236770, 236825, 236787, 236800, 236832, 753, 180483, 236787, 1392, 4722, 2088, 659, 611, 236881, 107, 236778, 236771, 236778, 236810, 236772, 236771, 236819, 236772, 236778, 236771, 236743, 236770, 236825, 236787, 236800, 236832, 753, 22616, 236787, 29328, 5869, 236761, 111740, 611, 1440, 3487, 531, 20499, 786, 607, 822, 6219, 236761, 2900, 236858, 236751, 580, 822, 3666, 236881, 5185, 236858, 236745, 3442, 786, 611, 236789, 500, 808, 40016, 236829, 4875, 531, 3050, 1217, 564, 115258, 1135, 111042, 236761, 1030, 236789, 236751, 711, 7121, 496, 10562, 573, 116680, 236764, 611, 1281, 236761, 85345, 1452, 16263, 236764, 180483, 236764, 13358, 872, 580, 22616, 236761, 21966, 1041, 623, 76562, 236775, 4038, 236789, 236745, 2583, 611, 2196, 12379, 531, 26760, 1116, 236761, 2625, 236789, 236751, 2506, 808, 71467, 236829, 531, 776, 236764, 2132, 2432, 236761, 25788, 236764, 1304, 236789, 236751, 13275, 11844, 529, 12804, 13442, 236761, 20043, 236764, 496, 2268, 4481, 6733, 2752, 16131, 6533, 1390, 4285, 1056, 14082, 607, 237064, 1388, 236764, 611, 236761, 107, 236778, 236771, 236778, 236810, 236772, 236771, 236819, 236772, 236778, 236771, 236743, 236770, 236825, 236787, 236800, 236832, 753, 22616, 236787, 7062, 236764, 808, 23391, 93548, 30237, 96018, 236761, 1599, 236858, 500, 1164, 528, 990, 236761, 3792, 786, 1164, 237064, 808, 35277, 236751, 13275, 32848, 44230, 22429, 564, 236789, 236757, 3490, 233318, 236764, 529, 3003, 236761, 187177, 133140, 37253, 1788, 236761, 1030, 236789, 236751, 496, 2606, 529, 981, 236764, 16977, 672, 1984, 529, 36515, 236764, 611, 1281, 236881, 96230, 236764, 2432, 659, 237064, 6121, 236761, 169387, 607, 506, 10925, 12539, 529, 99168, 219769, 208651, 33221, 2858, 616, 236761, 2195, 236789, 500, 237064, 808, 643, 803, 11542, 236829, 32585, 236761, 197858, 2514, 496, 3107, 7068, 580, 1091, 236764, 611, 1281, 236881, 2195, 236858, 500, 1041, 10598, 236761, 1452, 5026, 1271, 808, 6036, 1264, 112799, 528, 22616, 236858, 236751, 5281, 236829, 1271, 815, 1010, 10264, 786, 59361, 607, 910, 237064, 4709, 11521, 236761, 20043, 236764, 2126, 236764, 625, 236789, 236751, 919, 73225, 1082, 4658, 236761, 1593, 236764, 14045, 236761, 46939, 1535, 236761, 2900, 1003, 808, 7624, 236829, 236881, 83412, 531, 577, 15978, 236764, 564, 4614, 236881, 5185, 236789, 236745, 14928, 786, 236761, 85345, 107, 236778, 236771, 236778, 236810, 236772, 236771, 236819, 236772, 236778, 236771, 236743, 236770, 236825, 236787, 236812, 236832, 753, 180483, 236787, 1392, 4722, 31251, 108635, 2099, 612, 236749, 236881, 107, 2887, 236787, 31251, 108635, 2099, 612, 236749, 236881, 107, 236820, 236909, 111457, 111038, 106, 107, 105, 4368, 107, 17531, 993, 236764, 96018, 236761, 623, 10541, 145301, 35773, 236881, 39071, 236881, 1599, 236789, 500, 17154, 573, 68765, 123577, 1492, 236881, 56515, 822, 3710, 236761, 236743, 108, 118958, 236764, 2432, 659, 237064, 13181, 236761, 1773, 2462, 236761, 83412, 531, 2250, 2925, 496, 2321, 3272, 1015, 4483, 531, 1751, 98933, 30977, 659, 1164, 808, 215582, 22429, 1030, 236789, 236751, 496, 47117, 236764, 1531, 786, 3442, 611, 236761, 2024, 5026, 815, 531, 2514, 1091, 699, 43443, 14260, 496, 12566, 10530, 236761, 1599, 1281, 236764, 506, 10925, 11814, 7305, 236761, 236743, 108, 4722, 236858, 236751, 1010, 10264, 786, 114566, 607, 1116, 110425, 24206, 236764, 618, 2462, 236761, 2625, 236858, 236751, 496, 74898, 236764, 1581, 768, 1304, 808, 38917, 236829, 1751, 1304, 236858, 236751, 2787, 4677, 1663, 236761, 96230, 236764, 1646, 1116, 33797, 1921, 577, 808, 126296, 522, 22429, 236743, 108, 4324, 236764, 1144, 236858, 236751, 607, 808, 7624, 236829, 236881, 7989, 2613, 861, 531, 577, 24659, 684, 236881, 5185, 236858, 236745, 3442, 786, 611, 236789, 500, 2036, 517, 60213, 1024, 506, 6524, 7003, 236761, 15325, 531, 577, 496, 2268, 919, 237064, 6121, 236761, 85345], 'total_duration': 7815156609, 'load_duration': 4871461713, 'prompt_eval_count': 708, 'prompt_eval_duration': 412180695, 'eval_count': 182, 'eval_duration': 2531033071} +[2025-09-20 12:55:40] [INFO] [ai:40] ๐Ÿ” Modelfile loaded: ../examples/gojo.mod +[2025-09-20 13:11:46] [INFO] [ai:40] ๐Ÿ” Modelfile loaded: ../examples/gojo.mod +[2025-09-20 13:11:46] [INFO] [bot:53] ๐Ÿ” Loaded MODEL_NAME from .env: gemma3:12b +[2025-09-20 13:11:46] [INFO] [bot:55] ๐Ÿงน Attempting to clear VRAM before loading gemma3:12b... +[2025-09-20 13:11:46] [INFO] [ai:113] ๐Ÿงน Sending safe unload request for `gemma3:12b` +[2025-09-20 13:11:46] [INFO] [ai:120] ๐Ÿงฝ Ollama unload response: 200 - {"model":"gemma3:12b","created_at":"2025-09-20T17:11:46.150823682Z","response":"","done":true,"done_reason":"unload"} +[2025-09-20 13:11:46] [INFO] [ai:93] ๐Ÿง  Preloading model: gemma3:12b +[2025-09-20 13:11:46] [INFO] [ai:100] ๐Ÿ“ฆ Model pull started successfully. +[2025-09-20 13:11:46] [INFO] [bot:59] ๐Ÿš€ Model `gemma3:12b` preloaded on startup. +[2025-09-20 13:11:46] [INFO] [bot:62] โœ… Final model in use: gemma3:12b +[2025-09-20 13:11:49] [INFO] [bot:154] Logged in as AI Bot +[2025-09-20 13:11:49] [INFO] [scheduler:29] ๐Ÿ›‘ Scheduler disabled in config. +[2025-09-20 13:12:19] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.67) +[2025-09-20 13:12:19] [INFO] [ai:93] ๐Ÿง  Preloading model: gemma3:12b +[2025-09-20 13:12:19] [INFO] [ai:100] ๐Ÿ“ฆ Model pull started successfully. +[2025-09-20 13:12:19] [INFO] [ai:132] llm-8d3d9f6e LLM request start model=gemma3:12b user=- context_len=0 +[2025-09-20 13:12:19] [DEBUG] [ai:184] llm-8d3d9f6e Sending payload to Ollama: model=gemma3:12b user=None +[2025-09-20 13:12:19] [DEBUG] [ai:185] llm-8d3d9f6e Payload size=405 chars +[2025-09-20 13:12:25] [DEBUG] [ai:193] llm-8d3d9f6e Raw response status=200 +[2025-09-20 13:12:25] [DEBUG] [ai:194] llm-8d3d9f6e Raw response body={"model":"gemma3:12b","created_at":"2025-09-20T17:12:25.867690742Z","response":"๐Ÿค”๐Ÿคจ","done":true,"done_reason":"stop","context":[105,2364,107,236820,236909,9731,111038,3048,659,555,1277,236756,3764,5400,699,219769,208651,751,119814,236761,1599,236858,500,16690,236762,236764,8632,236764,532,1378,14620,236764,840,19297,20111,529,822,3272,236761,95419,528,496,4532,15737,236761,15428,19921,611,236789,500,496,9894,21603,236909,643,111038,2887,236787,1599,659,22616,236764,614,73296,2872,1015,6178,111730,531,9434,531,2430,10396,236761,17770,496,3618,236764,994,44917,236743,236770,236964,236800,22690,111730,528,3072,531,506,15737,653,3004,236761,2301,1816,236761,108,2887,236787,1717,1901,2164,8283,107,4722,236787,107,236820,236909,111457,111038,106,107,105,4368,107,242846,248294],"total_duration":6368670126,"load_duration":6109595248,"prompt_eval_count":118,"prompt_eval_duration":210675374,"eval_count":3,"eval_duration":47874041} +[2025-09-20 13:12:25] [INFO] [ai:140] llm-8d3d9f6e LLM response model=gemma3:12b duration=6.385s summary=๐Ÿค”๐Ÿคจ +[2025-09-20 13:12:25] [DEBUG] [ai:142] llm-8d3d9f6e LLM raw response: {'model': 'gemma3:12b', 'created_at': '2025-09-20T17:12:25.867690742Z', 'response': '๐Ÿค”๐Ÿคจ', 'done': True, 'done_reason': 'stop', 'context': [105, 2364, 107, 236820, 236909, 9731, 111038, 3048, 659, 555, 1277, 236756, 3764, 5400, 699, 219769, 208651, 751, 119814, 236761, 1599, 236858, 500, 16690, 236762, 236764, 8632, 236764, 532, 1378, 14620, 236764, 840, 19297, 20111, 529, 822, 3272, 236761, 95419, 528, 496, 4532, 15737, 236761, 15428, 19921, 611, 236789, 500, 496, 9894, 21603, 236909, 643, 111038, 2887, 236787, 1599, 659, 22616, 236764, 614, 73296, 2872, 1015, 6178, 111730, 531, 9434, 531, 2430, 10396, 236761, 17770, 496, 3618, 236764, 994, 44917, 236743, 236770, 236964, 236800, 22690, 111730, 528, 3072, 531, 506, 15737, 653, 3004, 236761, 2301, 1816, 236761, 108, 2887, 236787, 1717, 1901, 2164, 8283, 107, 4722, 236787, 107, 236820, 236909, 111457, 111038, 106, 107, 105, 4368, 107, 242846, 248294], 'total_duration': 6368670126, 'load_duration': 6109595248, 'prompt_eval_count': 118, 'prompt_eval_duration': 210675374, 'eval_count': 3, 'eval_duration': 47874041} +[2025-09-20 13:12:25] [DEBUG] [autochat:113] ๐ŸŽญ Emoji suggestion from LLM: ๐Ÿค”๐Ÿคจ +[2025-09-20 13:12:26] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 13:12:27] [INFO] [bot:91] Command modfile info on cooldown. Retry after 9.8 seconds. +[2025-09-20 13:13:38] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.24) +[2025-09-20 13:13:38] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.19) +[2025-09-20 13:13:38] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 13:13:38] [INFO] [bot:91] Command modfile info on cooldown. Retry after 10.0 seconds. +[2025-09-20 13:13:42] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.88) +[2025-09-20 13:13:42] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.68) +[2025-09-20 13:13:42] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 13:13:42] [INFO] [bot:91] Command modfile on cooldown. Retry after 5.7 seconds. +[2025-09-20 13:13:44] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.74) +[2025-09-20 13:13:44] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.47) +[2025-09-20 13:13:44] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 13:13:44] [INFO] [bot:91] Command modfile on cooldown. Retry after 3.7 seconds. +[2025-09-20 13:13:45] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.17) +[2025-09-20 13:13:45] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.40) +[2025-09-20 13:13:45] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 13:13:45] [INFO] [bot:91] Command modfile on cooldown. Retry after 2.6 seconds. +[2025-09-20 13:13:48] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.73) +[2025-09-20 13:13:48] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.45) +[2025-09-20 13:13:48] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 13:13:48] [INFO] [bot:91] Command modfile info on cooldown. Retry after 10.0 seconds. +[2025-09-20 13:14:18] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.42) +[2025-09-20 13:14:18] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.62) +[2025-09-20 13:14:18] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 13:14:18] [INFO] [bot:137] ============================================================ AI Response ============================================================ +[2025-09-20 13:14:18] [INFO] [bot:138] ๐Ÿง  Profile loaded for Miguel (interactions: 256) +[2025-09-20 13:14:18] [INFO] [bot:142] ๐Ÿ“š Retrieved 0 messages for context +[2025-09-20 13:14:18] [INFO] [ai:93] ๐Ÿง  Preloading model: gemma3:12b +[2025-09-20 13:14:18] [INFO] [ai:100] ๐Ÿ“ฆ Model pull started successfully. +[2025-09-20 13:14:18] [INFO] [ai:132] llm-afad280d LLM request start model=gemma3:12b user=Miguel context_len=0 +[2025-09-20 13:14:18] [DEBUG] [ai:184] llm-afad280d Sending payload to Ollama: model=gemma3:12b user=Miguel +[2025-09-20 13:14:18] [DEBUG] [ai:185] llm-afad280d Payload size=294 chars +[2025-09-20 13:14:19] [DEBUG] [ai:193] llm-afad280d Raw response status=200 +[2025-09-20 13:14:19] [DEBUG] [ai:194] llm-afad280d Raw response body={"model":"gemma3:12b","created_at":"2025-09-20T17:14:19.819719058Z","response":"Oh, you know, living the good life. Perfect weather, annoying curses to obliterate, and adoring students. Can't complain, really. And you? Are you being a good little student? Don't tell me you're getting all sentimental now... It's unbecoming. ๐Ÿ˜‰","done":true,"done_reason":"stop","context":[105,2364,107,236820,236909,9731,111038,3048,659,555,1277,236756,3764,5400,699,219769,208651,751,119814,236761,1599,236858,500,16690,236762,236764,8632,236764,532,1378,14620,236764,840,19297,20111,529,822,3272,236761,95419,528,496,4532,15737,236761,15428,19921,611,236789,500,496,9894,21603,236909,643,236909,36678,2887,64017,236842,107,4792,563,1401,6290,531,786,2338,564,1006,1116,7588,236764,532,33797,107,2887,236787,2088,659,611,236881,107,236820,236909,111457,111038,106,107,105,4368,107,12932,236764,611,1281,236764,4882,506,1535,1972,236761,26079,7606,236764,40619,114739,531,17944,85339,236764,532,772,5227,3272,236761,3199,236789,236745,28686,236764,2126,236761,1452,611,236881,9354,611,1646,496,1535,2268,5117,236881,5185,236789,236745,3442,786,611,236789,500,3978,784,91526,1492,1390,1030,236789,236751,80154,7335,236761,85345],"total_duration":1045601510,"load_duration":141075068,"prompt_eval_count":93,"prompt_eval_duration":71062113,"eval_count":63,"eval_duration":833095681} +[2025-09-20 13:14:19] [INFO] [ai:140] llm-afad280d LLM response model=gemma3:12b duration=1.048s summary=Oh, you know, living the good life. Perfect weather, annoying curses to obliterate, and adoring students. Can't complain, really. And you? Are you being a good +[2025-09-20 13:14:19] [DEBUG] [ai:142] llm-afad280d LLM raw response: {'model': 'gemma3:12b', 'created_at': '2025-09-20T17:14:19.819719058Z', 'response': "Oh, you know, living the good life. Perfect weather, annoying curses to obliterate, and adoring students. Can't complain, really. And you? Are you being a good little student? Don't tell me you're getting all sentimental now... It's unbecoming. ๐Ÿ˜‰", 'done': True, 'done_reason': 'stop', 'context': [105, 2364, 107, 236820, 236909, 9731, 111038, 3048, 659, 555, 1277, 236756, 3764, 5400, 699, 219769, 208651, 751, 119814, 236761, 1599, 236858, 500, 16690, 236762, 236764, 8632, 236764, 532, 1378, 14620, 236764, 840, 19297, 20111, 529, 822, 3272, 236761, 95419, 528, 496, 4532, 15737, 236761, 15428, 19921, 611, 236789, 500, 496, 9894, 21603, 236909, 643, 236909, 36678, 2887, 64017, 236842, 107, 4792, 563, 1401, 6290, 531, 786, 2338, 564, 1006, 1116, 7588, 236764, 532, 33797, 107, 2887, 236787, 2088, 659, 611, 236881, 107, 236820, 236909, 111457, 111038, 106, 107, 105, 4368, 107, 12932, 236764, 611, 1281, 236764, 4882, 506, 1535, 1972, 236761, 26079, 7606, 236764, 40619, 114739, 531, 17944, 85339, 236764, 532, 772, 5227, 3272, 236761, 3199, 236789, 236745, 28686, 236764, 2126, 236761, 1452, 611, 236881, 9354, 611, 1646, 496, 1535, 2268, 5117, 236881, 5185, 236789, 236745, 3442, 786, 611, 236789, 500, 3978, 784, 91526, 1492, 1390, 1030, 236789, 236751, 80154, 7335, 236761, 85345], 'total_duration': 1045601510, 'load_duration': 141075068, 'prompt_eval_count': 93, 'prompt_eval_duration': 71062113, 'eval_count': 63, 'eval_duration': 833095681} +[2025-09-20 13:14:36] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.85) +[2025-09-20 13:14:36] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.20) +[2025-09-20 13:14:36] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 13:14:52] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.72) +[2025-09-20 13:14:52] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.47) +[2025-09-20 13:14:52] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 13:16:27] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.42) +[2025-09-20 13:16:27] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.16) +[2025-09-20 13:16:27] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 13:17:07] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.54) +[2025-09-20 13:17:07] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.12) +[2025-09-20 13:17:07] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 13:17:07] [INFO] [bot:91] Command modfile disable on cooldown. Retry after 10.0 seconds. +[2025-09-20 13:17:42] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.77) +[2025-09-20 13:17:42] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.56) +[2025-09-20 13:17:42] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 13:17:42] [INFO] [bot:91] Command modfile switch on cooldown. Retry after 10.0 seconds. +[2025-09-20 13:17:52] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.39) +[2025-09-20 13:17:52] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.42) +[2025-09-20 13:17:52] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 13:17:52] [INFO] [bot:91] Command modfile on cooldown. Retry after 0.4 seconds. +[2025-09-20 13:18:14] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.88) +[2025-09-20 13:18:14] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.50) +[2025-09-20 13:18:14] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 13:18:14] [INFO] [bot:91] Command modfile info on cooldown. Retry after 10.0 seconds. +[2025-09-20 13:24:10] [INFO] [ai:40] ๐Ÿ” Modelfile loaded: ../examples/gojo.mod +[2025-09-20 13:24:10] [INFO] [bot:53] ๐Ÿ” Loaded MODEL_NAME from .env: gemma3:12b +[2025-09-20 13:24:10] [INFO] [bot:55] ๐Ÿงน Attempting to clear VRAM before loading gemma3:12b... +[2025-09-20 13:24:10] [INFO] [ai:113] ๐Ÿงน Sending safe unload request for `gemma3:12b` +[2025-09-20 13:24:10] [INFO] [ai:120] ๐Ÿงฝ Ollama unload response: 200 - {"model":"gemma3:12b","created_at":"2025-09-20T17:24:10.819748601Z","response":"","done":true,"done_reason":"unload"} +[2025-09-20 13:24:10] [INFO] [ai:93] ๐Ÿง  Preloading model: gemma3:12b +[2025-09-20 13:24:11] [INFO] [ai:100] ๐Ÿ“ฆ Model pull started successfully. +[2025-09-20 13:24:11] [INFO] [bot:59] ๐Ÿš€ Model `gemma3:12b` preloaded on startup. +[2025-09-20 13:24:11] [INFO] [bot:62] โœ… Final model in use: gemma3:12b +[2025-09-20 13:24:13] [INFO] [bot:163] Logged in as AI Bot +[2025-09-20 13:24:13] [INFO] [scheduler:29] ๐Ÿ›‘ Scheduler disabled in config. +[2025-09-20 13:24:46] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.53) +[2025-09-20 13:24:46] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.96) +[2025-09-20 13:24:46] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 13:24:46] [INFO] [bot:91] Command modfile info on cooldown. Retry after 10.0 seconds. +[2025-09-20 13:24:46] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.63) +[2025-09-20 13:24:46] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.82) +[2025-09-20 13:24:46] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 13:25:11] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.73) +[2025-09-20 13:25:11] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.62) +[2025-09-20 13:25:11] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.74) +[2025-09-20 13:25:11] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 13:25:11] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.97) +[2025-09-20 13:25:11] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 13:25:11] [INFO] [bot:91] Command modfile reload on cooldown. Retry after 10.0 seconds. +[2025-09-20 13:25:11] [INFO] [ai:234] ๐Ÿ” Modelfile loaded: ../examples/gojo.mod +[2025-09-20 13:25:38] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.20) +[2025-09-20 13:25:38] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.75) +[2025-09-20 13:25:38] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 13:25:38] [INFO] [bot:91] Command modfile disable on cooldown. Retry after 10.0 seconds. +[2025-09-20 13:25:38] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.47) +[2025-09-20 13:25:38] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.78) +[2025-09-20 13:25:38] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 13:25:38] [INFO] [ai:250] ๐Ÿ” Modelfile unloaded/disabled at runtime. +[2025-09-20 13:25:51] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.61) +[2025-09-20 13:25:51] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.19) +[2025-09-20 13:25:51] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 13:25:51] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.18) +[2025-09-20 13:25:51] [INFO] [ai:93] ๐Ÿง  Preloading model: gemma3:12b +[2025-09-20 13:25:52] [INFO] [ai:100] ๐Ÿ“ฆ Model pull started successfully. +[2025-09-20 13:25:52] [INFO] [ai:132] llm-a9e02346 LLM request start model=gemma3:12b user=- context_len=0 +[2025-09-20 13:25:52] [DEBUG] [ai:184] llm-a9e02346 Sending payload to Ollama: model=gemma3:12b user=None +[2025-09-20 13:25:52] [DEBUG] [ai:185] llm-a9e02346 Payload size=416 chars +[2025-09-20 13:25:55] [DEBUG] [ai:193] llm-a9e02346 Raw response status=200 +[2025-09-20 13:25:55] [DEBUG] [ai:194] llm-a9e02346 Raw response body={"model":"gemma3:12b","created_at":"2025-09-20T17:25:55.840276424Z","response":"๐Ÿ™„ ๐Ÿ˜’ ๐Ÿˆโ€โฌ›","done":true,"done_reason":"stop","context":[105,2364,107,3048,659,22616,236764,496,20997,236764,138179,46174,5866,24679,236761,1599,2752,4029,531,5869,618,614,12498,653,16326,236761,31246,8988,607,83426,236761,2514,10396,4260,532,1161,111730,51641,236761,9567,7546,531,54650,496,2268,236761,108,2887,236787,1599,659,22616,236764,614,73296,2872,1015,6178,111730,531,9434,531,2430,10396,236761,17770,496,3618,236764,994,44917,236743,236770,236964,236800,22690,111730,528,3072,531,506,15737,653,3004,236761,2301,1816,236761,108,2887,236787,1717,1901,2164,9369,107,4722,236787,107,4722,236787,106,107,105,4368,107,243810,236743,245226,236743,249160,237243,249598],"total_duration":3789064295,"load_duration":3470767236,"prompt_eval_count":107,"prompt_eval_duration":198509835,"eval_count":8,"eval_duration":119234550} +[2025-09-20 13:25:55] [INFO] [ai:140] llm-a9e02346 LLM response model=gemma3:12b duration=3.806s summary=๐Ÿ™„ ๐Ÿ˜’ ๐Ÿˆโ€โฌ› +[2025-09-20 13:25:55] [DEBUG] [ai:142] llm-a9e02346 LLM raw response: {'model': 'gemma3:12b', 'created_at': '2025-09-20T17:25:55.840276424Z', 'response': '๐Ÿ™„ ๐Ÿ˜’ ๐Ÿˆ\u200dโฌ›', 'done': True, 'done_reason': 'stop', 'context': [105, 2364, 107, 3048, 659, 22616, 236764, 496, 20997, 236764, 138179, 46174, 5866, 24679, 236761, 1599, 2752, 4029, 531, 5869, 618, 614, 12498, 653, 16326, 236761, 31246, 8988, 607, 83426, 236761, 2514, 10396, 4260, 532, 1161, 111730, 51641, 236761, 9567, 7546, 531, 54650, 496, 2268, 236761, 108, 2887, 236787, 1599, 659, 22616, 236764, 614, 73296, 2872, 1015, 6178, 111730, 531, 9434, 531, 2430, 10396, 236761, 17770, 496, 3618, 236764, 994, 44917, 236743, 236770, 236964, 236800, 22690, 111730, 528, 3072, 531, 506, 15737, 653, 3004, 236761, 2301, 1816, 236761, 108, 2887, 236787, 1717, 1901, 2164, 9369, 107, 4722, 236787, 107, 4722, 236787, 106, 107, 105, 4368, 107, 243810, 236743, 245226, 236743, 249160, 237243, 249598], 'total_duration': 3789064295, 'load_duration': 3470767236, 'prompt_eval_count': 107, 'prompt_eval_duration': 198509835, 'eval_count': 8, 'eval_duration': 119234550} +[2025-09-20 13:25:55] [DEBUG] [autochat:113] ๐ŸŽญ Emoji suggestion from LLM: ๐Ÿ™„ ๐Ÿ˜’ ๐Ÿˆโ€โฌ› +[2025-09-20 13:25:57] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 13:26:11] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.81) +[2025-09-20 13:26:11] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.82) +[2025-09-20 13:26:11] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 13:26:11] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.60) +[2025-09-20 13:26:11] [INFO] [ai:93] ๐Ÿง  Preloading model: gemma3:12b +[2025-09-20 13:26:11] [INFO] [ai:100] ๐Ÿ“ฆ Model pull started successfully. +[2025-09-20 13:26:11] [INFO] [ai:132] llm-fbcb95cf LLM request start model=gemma3:12b user=- context_len=0 +[2025-09-20 13:26:11] [DEBUG] [ai:184] llm-fbcb95cf Sending payload to Ollama: model=gemma3:12b user=None +[2025-09-20 13:26:11] [DEBUG] [ai:185] llm-fbcb95cf Payload size=407 chars +[2025-09-20 13:26:11] [INFO] [ai:234] ๐Ÿ” Modelfile loaded: ../examples/gojo.mod +[2025-09-20 13:26:11] [DEBUG] [ai:193] llm-fbcb95cf Raw response status=200 +[2025-09-20 13:26:11] [DEBUG] [ai:194] llm-fbcb95cf Raw response body={"model":"gemma3:12b","created_at":"2025-09-20T17:26:11.965510471Z","response":"๐Ÿ˜‰๐Ÿ‘Œ","done":true,"done_reason":"stop","context":[105,2364,107,236820,236909,9731,111038,3048,659,555,1277,236756,3764,5400,699,219769,208651,751,119814,236761,1599,236858,500,16690,236762,236764,8632,236764,532,1378,14620,236764,840,19297,20111,529,822,3272,236761,95419,528,496,4532,15737,236761,15428,19921,611,236789,500,496,9894,21603,236909,643,111038,2887,236787,1599,659,22616,236764,614,73296,2872,1015,6178,111730,531,9434,531,2430,10396,236761,17770,496,3618,236764,994,44917,236743,236770,236964,236800,22690,111730,528,3072,531,506,15737,653,3004,236761,2301,1816,236761,108,2887,236787,1717,1901,2164,54728,107,4722,236787,107,236820,236909,111457,111038,106,107,105,4368,107,241234,242003],"total_duration":232920819,"load_duration":145813132,"prompt_eval_count":118,"prompt_eval_duration":55984952,"eval_count":3,"eval_duration":30740376} +[2025-09-20 13:26:11] [INFO] [ai:140] llm-fbcb95cf LLM response model=gemma3:12b duration=0.236s summary=๐Ÿ˜‰๐Ÿ‘Œ +[2025-09-20 13:26:11] [DEBUG] [ai:142] llm-fbcb95cf LLM raw response: {'model': 'gemma3:12b', 'created_at': '2025-09-20T17:26:11.965510471Z', 'response': '๐Ÿ˜‰๐Ÿ‘Œ', 'done': True, 'done_reason': 'stop', 'context': [105, 2364, 107, 236820, 236909, 9731, 111038, 3048, 659, 555, 1277, 236756, 3764, 5400, 699, 219769, 208651, 751, 119814, 236761, 1599, 236858, 500, 16690, 236762, 236764, 8632, 236764, 532, 1378, 14620, 236764, 840, 19297, 20111, 529, 822, 3272, 236761, 95419, 528, 496, 4532, 15737, 236761, 15428, 19921, 611, 236789, 500, 496, 9894, 21603, 236909, 643, 111038, 2887, 236787, 1599, 659, 22616, 236764, 614, 73296, 2872, 1015, 6178, 111730, 531, 9434, 531, 2430, 10396, 236761, 17770, 496, 3618, 236764, 994, 44917, 236743, 236770, 236964, 236800, 22690, 111730, 528, 3072, 531, 506, 15737, 653, 3004, 236761, 2301, 1816, 236761, 108, 2887, 236787, 1717, 1901, 2164, 54728, 107, 4722, 236787, 107, 236820, 236909, 111457, 111038, 106, 107, 105, 4368, 107, 241234, 242003], 'total_duration': 232920819, 'load_duration': 145813132, 'prompt_eval_count': 118, 'prompt_eval_duration': 55984952, 'eval_count': 3, 'eval_duration': 30740376} +[2025-09-20 13:26:11] [DEBUG] [autochat:113] ๐ŸŽญ Emoji suggestion from LLM: ๐Ÿ˜‰๐Ÿ‘Œ +[2025-09-20 13:26:12] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 13:26:12] [INFO] [bot:91] Command modfile reload on cooldown. Retry after 10.0 seconds. +[2025-09-20 13:26:23] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.13) +[2025-09-20 13:26:23] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.27) +[2025-09-20 13:26:23] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 13:26:23] [INFO] [bot:91] Command modfile switch on cooldown. Retry after 10.0 seconds. +[2025-09-20 13:26:23] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.12) +[2025-09-20 13:26:23] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.29) +[2025-09-20 13:26:23] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 13:26:23] [INFO] [ai:234] ๐Ÿ” Modelfile loaded: examples/gojo.mod +[2025-09-20 13:40:10] [INFO] [ai:40] ๐Ÿ” Modelfile loaded: ../examples/gojo.mod +[2025-09-20 13:40:10] [INFO] [bot:55] ๐Ÿ” Loaded MODEL_NAME from .env: gemma3:12b +[2025-09-20 13:40:10] [INFO] [bot:57] ๐Ÿงน Attempting to clear VRAM before loading gemma3:12b... +[2025-09-20 13:40:10] [INFO] [ai:113] ๐Ÿงน Sending safe unload request for `gemma3:12b` +[2025-09-20 13:40:10] [INFO] [ai:120] ๐Ÿงฝ Ollama unload response: 200 - {"model":"gemma3:12b","created_at":"2025-09-20T17:40:10.326978567Z","response":"","done":true,"done_reason":"unload"} +[2025-09-20 13:40:10] [INFO] [ai:93] ๐Ÿง  Preloading model: gemma3:12b +[2025-09-20 13:40:10] [INFO] [ai:100] ๐Ÿ“ฆ Model pull started successfully. +[2025-09-20 13:40:10] [INFO] [bot:61] ๐Ÿš€ Model `gemma3:12b` preloaded on startup. +[2025-09-20 13:40:10] [INFO] [bot:64] โœ… Final model in use: gemma3:12b +[2025-09-20 13:40:13] [INFO] [bot:173] Logged in as AI Bot +[2025-09-20 13:40:13] [INFO] [scheduler:29] ๐Ÿ›‘ Scheduler disabled in config. +[2025-09-20 13:46:30] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.82) +[2025-09-20 13:46:30] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.53) +[2025-09-20 13:46:30] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 13:46:30] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.14) +[2025-09-20 13:46:30] [INFO] [ai:93] ๐Ÿง  Preloading model: gemma3:12b +[2025-09-20 13:46:30] [INFO] [ai:100] ๐Ÿ“ฆ Model pull started successfully. +[2025-09-20 13:46:30] [INFO] [ai:132] llm-b511fd52 LLM request start model=gemma3:12b user=- context_len=0 +[2025-09-20 13:46:30] [DEBUG] [ai:184] llm-b511fd52 Sending payload to Ollama: model=gemma3:12b user=None +[2025-09-20 13:46:30] [DEBUG] [ai:185] llm-b511fd52 Payload size=405 chars +[2025-09-20 13:46:35] [DEBUG] [ai:193] llm-b511fd52 Raw response status=200 +[2025-09-20 13:46:35] [DEBUG] [ai:194] llm-b511fd52 Raw response body={"model":"gemma3:12b","created_at":"2025-09-20T17:46:35.332967677Z","response":"๐Ÿ˜‰โœจ","done":true,"done_reason":"stop","context":[105,2364,107,236820,236909,9731,111038,3048,659,555,1277,236756,3764,5400,699,219769,208651,751,119814,236761,1599,236858,500,16690,236762,236764,8632,236764,532,1378,14620,236764,840,19297,20111,529,822,3272,236761,95419,528,496,4532,15737,236761,15428,19921,611,236789,500,496,9894,21603,236909,643,111038,2887,236787,1599,659,22616,236764,614,73296,2872,1015,6178,111730,531,9434,531,2430,10396,236761,17770,496,3618,236764,994,44917,236743,236770,236964,236800,22690,111730,528,3072,531,506,15737,653,3004,236761,2301,1816,236761,108,2887,236787,1717,1901,2164,8283,107,4722,236787,107,236820,236909,111457,111038,106,107,105,4368,107,241234,239794],"total_duration":4735238133,"load_duration":4488187875,"prompt_eval_count":118,"prompt_eval_duration":197654078,"eval_count":3,"eval_duration":48836914} +[2025-09-20 13:46:35] [INFO] [ai:140] llm-b511fd52 LLM response model=gemma3:12b duration=4.750s summary=๐Ÿ˜‰โœจ +[2025-09-20 13:46:35] [DEBUG] [ai:142] llm-b511fd52 LLM raw response: {'model': 'gemma3:12b', 'created_at': '2025-09-20T17:46:35.332967677Z', 'response': '๐Ÿ˜‰โœจ', 'done': True, 'done_reason': 'stop', 'context': [105, 2364, 107, 236820, 236909, 9731, 111038, 3048, 659, 555, 1277, 236756, 3764, 5400, 699, 219769, 208651, 751, 119814, 236761, 1599, 236858, 500, 16690, 236762, 236764, 8632, 236764, 532, 1378, 14620, 236764, 840, 19297, 20111, 529, 822, 3272, 236761, 95419, 528, 496, 4532, 15737, 236761, 15428, 19921, 611, 236789, 500, 496, 9894, 21603, 236909, 643, 111038, 2887, 236787, 1599, 659, 22616, 236764, 614, 73296, 2872, 1015, 6178, 111730, 531, 9434, 531, 2430, 10396, 236761, 17770, 496, 3618, 236764, 994, 44917, 236743, 236770, 236964, 236800, 22690, 111730, 528, 3072, 531, 506, 15737, 653, 3004, 236761, 2301, 1816, 236761, 108, 2887, 236787, 1717, 1901, 2164, 8283, 107, 4722, 236787, 107, 236820, 236909, 111457, 111038, 106, 107, 105, 4368, 107, 241234, 239794], 'total_duration': 4735238133, 'load_duration': 4488187875, 'prompt_eval_count': 118, 'prompt_eval_duration': 197654078, 'eval_count': 3, 'eval_duration': 48836914} +[2025-09-20 13:46:35] [DEBUG] [autochat:113] ๐ŸŽญ Emoji suggestion from LLM: ๐Ÿ˜‰โœจ +[2025-09-20 13:46:35] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 13:46:35] [INFO] [bot:91] Command modfile info on cooldown. Retry after 10.0 seconds. +[2025-09-20 13:46:42] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.32) +[2025-09-20 13:46:42] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.93) +[2025-09-20 13:46:42] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 13:46:42] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.96) +[2025-09-20 13:46:42] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.72) +[2025-09-20 13:46:42] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 13:46:42] [INFO] [bot:91] Command modfile on cooldown. Retry after 3.5 seconds. +[2025-09-20 13:46:48] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.47) +[2025-09-20 13:46:48] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.74) +[2025-09-20 13:46:48] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 13:46:48] [INFO] [bot:91] Command modfile info on cooldown. Retry after 10.0 seconds. +[2025-09-20 13:46:48] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.60) +[2025-09-20 13:46:48] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.84) +[2025-09-20 13:46:48] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 13:47:16] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.18) +[2025-09-20 13:47:16] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.45) +[2025-09-20 13:47:16] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 13:47:16] [INFO] [ai:93] ๐Ÿง  Preloading model: gemma3:12b +[2025-09-20 13:47:16] [INFO] [ai:100] ๐Ÿ“ฆ Model pull started successfully. +[2025-09-20 13:47:16] [INFO] [ai:132] llm-fc0690b1 LLM request start model=gemma3:12b user=- context_len=0 +[2025-09-20 13:47:16] [DEBUG] [ai:184] llm-fc0690b1 Sending payload to Ollama: model=gemma3:12b user=None +[2025-09-20 13:47:16] [DEBUG] [ai:185] llm-fc0690b1 Payload size=405 chars +[2025-09-20 13:47:16] [DEBUG] [ai:193] llm-fc0690b1 Raw response status=200 +[2025-09-20 13:47:16] [DEBUG] [ai:194] llm-fc0690b1 Raw response body={"model":"gemma3:12b","created_at":"2025-09-20T17:47:16.461322678Z","response":"๐Ÿค”๐Ÿคจ","done":true,"done_reason":"stop","context":[105,2364,107,236820,236909,9731,111038,3048,659,555,1277,236756,3764,5400,699,219769,208651,751,119814,236761,1599,236858,500,16690,236762,236764,8632,236764,532,1378,14620,236764,840,19297,20111,529,822,3272,236761,95419,528,496,4532,15737,236761,15428,19921,611,236789,500,496,9894,21603,236909,643,111038,2887,236787,1599,659,22616,236764,614,73296,2872,1015,6178,111730,531,9434,531,2430,10396,236761,17770,496,3618,236764,994,44917,236743,236770,236964,236800,22690,111730,528,3072,531,506,15737,653,3004,236761,2301,1816,236761,108,2887,236787,1717,1901,2164,8283,107,4722,236787,107,236820,236909,111457,111038,106,107,105,4368,107,242846,248294],"total_duration":226316319,"load_duration":142824547,"prompt_eval_count":118,"prompt_eval_duration":50562188,"eval_count":3,"eval_duration":32579378} +[2025-09-20 13:47:16] [INFO] [ai:140] llm-fc0690b1 LLM response model=gemma3:12b duration=0.229s summary=๐Ÿค”๐Ÿคจ +[2025-09-20 13:47:16] [DEBUG] [ai:142] llm-fc0690b1 LLM raw response: {'model': 'gemma3:12b', 'created_at': '2025-09-20T17:47:16.461322678Z', 'response': '๐Ÿค”๐Ÿคจ', 'done': True, 'done_reason': 'stop', 'context': [105, 2364, 107, 236820, 236909, 9731, 111038, 3048, 659, 555, 1277, 236756, 3764, 5400, 699, 219769, 208651, 751, 119814, 236761, 1599, 236858, 500, 16690, 236762, 236764, 8632, 236764, 532, 1378, 14620, 236764, 840, 19297, 20111, 529, 822, 3272, 236761, 95419, 528, 496, 4532, 15737, 236761, 15428, 19921, 611, 236789, 500, 496, 9894, 21603, 236909, 643, 111038, 2887, 236787, 1599, 659, 22616, 236764, 614, 73296, 2872, 1015, 6178, 111730, 531, 9434, 531, 2430, 10396, 236761, 17770, 496, 3618, 236764, 994, 44917, 236743, 236770, 236964, 236800, 22690, 111730, 528, 3072, 531, 506, 15737, 653, 3004, 236761, 2301, 1816, 236761, 108, 2887, 236787, 1717, 1901, 2164, 8283, 107, 4722, 236787, 107, 236820, 236909, 111457, 111038, 106, 107, 105, 4368, 107, 242846, 248294], 'total_duration': 226316319, 'load_duration': 142824547, 'prompt_eval_count': 118, 'prompt_eval_duration': 50562188, 'eval_count': 3, 'eval_duration': 32579378} +[2025-09-20 13:47:16] [DEBUG] [autochat:113] ๐ŸŽญ Emoji suggestion from LLM: ๐Ÿค”๐Ÿคจ +[2025-09-20 13:47:17] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.16) +[2025-09-20 13:47:17] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 13:47:17] [INFO] [bot:91] Command modfile info on cooldown. Retry after 10.0 seconds. +[2025-09-20 13:47:19] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.13) +[2025-09-20 13:47:19] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.36) +[2025-09-20 13:47:19] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 13:47:19] [INFO] [bot:91] Command modfile on cooldown. Retry after 8.3 seconds. +[2025-09-20 13:47:19] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.65) +[2025-09-20 13:47:19] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.39) +[2025-09-20 13:47:19] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 13:47:21] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.71) +[2025-09-20 13:47:21] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.11) +[2025-09-20 13:47:21] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 13:47:21] [INFO] [bot:91] Command modfile on cooldown. Retry after 5.6 seconds. +[2025-09-20 13:47:21] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.29) +[2025-09-20 13:47:21] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.90) +[2025-09-20 13:47:21] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 13:47:24] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.95) +[2025-09-20 13:47:24] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.82) +[2025-09-20 13:47:24] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 13:47:24] [INFO] [bot:91] Command modfile on cooldown. Retry after 2.5 seconds. +[2025-09-20 13:47:24] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.94) +[2025-09-20 13:47:24] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.38) +[2025-09-20 13:47:24] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 13:49:04] [INFO] [ai:40] ๐Ÿ” Modelfile loaded: ../examples/gojo.mod +[2025-09-20 13:49:04] [INFO] [bot:55] ๐Ÿ” Loaded MODEL_NAME from .env: gemma3:12b +[2025-09-20 13:49:04] [INFO] [bot:57] ๐Ÿงน Attempting to clear VRAM before loading gemma3:12b... +[2025-09-20 13:49:04] [INFO] [ai:113] ๐Ÿงน Sending safe unload request for `gemma3:12b` +[2025-09-20 13:49:04] [INFO] [ai:120] ๐Ÿงฝ Ollama unload response: 200 - {"model":"gemma3:12b","created_at":"2025-09-20T17:49:04.759037126Z","response":"","done":true,"done_reason":"unload"} +[2025-09-20 13:49:04] [INFO] [ai:93] ๐Ÿง  Preloading model: gemma3:12b +[2025-09-20 13:49:04] [INFO] [ai:100] ๐Ÿ“ฆ Model pull started successfully. +[2025-09-20 13:49:04] [INFO] [bot:61] ๐Ÿš€ Model `gemma3:12b` preloaded on startup. +[2025-09-20 13:49:04] [INFO] [bot:64] โœ… Final model in use: gemma3:12b +[2025-09-20 13:49:07] [INFO] [bot:177] Logged in as AI Bot +[2025-09-20 13:49:07] [INFO] [scheduler:29] ๐Ÿ›‘ Scheduler disabled in config. +[2025-09-20 13:49:13] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.68) +[2025-09-20 13:49:13] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.51) +[2025-09-20 13:49:13] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 13:49:13] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.61) +[2025-09-20 13:49:13] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.68) +[2025-09-20 13:49:13] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 13:49:13] [INFO] [bot:91] Command modfile info on cooldown. Retry after 10.0 seconds. +[2025-09-20 13:49:15] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.93) +[2025-09-20 13:49:15] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.88) +[2025-09-20 13:49:15] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 13:49:15] [INFO] [bot:91] Command modfile on cooldown. Retry after 8.1 seconds. +[2025-09-20 13:49:15] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.35) +[2025-09-20 13:49:15] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.33) +[2025-09-20 13:49:15] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 13:49:17] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.65) +[2025-09-20 13:49:17] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.66) +[2025-09-20 13:49:17] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 13:49:17] [INFO] [bot:91] Command modfile on cooldown. Retry after 6.5 seconds. +[2025-09-20 13:49:17] [INFO] [ai:93] ๐Ÿง  Preloading model: gemma3:12b +[2025-09-20 13:49:17] [INFO] [ai:100] ๐Ÿ“ฆ Model pull started successfully. +[2025-09-20 13:49:17] [INFO] [ai:132] llm-61c3e486 LLM request start model=gemma3:12b user=- context_len=0 +[2025-09-20 13:49:17] [DEBUG] [ai:184] llm-61c3e486 Sending payload to Ollama: model=gemma3:12b user=None +[2025-09-20 13:49:17] [DEBUG] [ai:185] llm-61c3e486 Payload size=405 chars +[2025-09-20 13:49:18] [INFO] [ai:93] ๐Ÿง  Preloading model: gemma3:12b +[2025-09-20 13:49:19] [INFO] [ai:100] ๐Ÿ“ฆ Model pull started successfully. +[2025-09-20 13:49:19] [INFO] [ai:132] llm-976eff9f LLM request start model=gemma3:12b user=- context_len=0 +[2025-09-20 13:49:19] [DEBUG] [ai:184] llm-976eff9f Sending payload to Ollama: model=gemma3:12b user=None +[2025-09-20 13:49:19] [DEBUG] [ai:185] llm-976eff9f Payload size=405 chars +[2025-09-20 13:49:21] [DEBUG] [ai:193] llm-61c3e486 Raw response status=200 +[2025-09-20 13:49:21] [DEBUG] [ai:194] llm-61c3e486 Raw response body={"model":"gemma3:12b","created_at":"2025-09-20T17:49:21.101796509Z","response":"๐Ÿคจ๐Ÿค”","done":true,"done_reason":"stop","context":[105,2364,107,236820,236909,9731,111038,3048,659,555,1277,236756,3764,5400,699,219769,208651,751,119814,236761,1599,236858,500,16690,236762,236764,8632,236764,532,1378,14620,236764,840,19297,20111,529,822,3272,236761,95419,528,496,4532,15737,236761,15428,19921,611,236789,500,496,9894,21603,236909,643,111038,2887,236787,1599,659,22616,236764,614,73296,2872,1015,6178,111730,531,9434,531,2430,10396,236761,17770,496,3618,236764,994,44917,236743,236770,236964,236800,22690,111730,528,3072,531,506,15737,653,3004,236761,2301,1816,236761,108,2887,236787,1717,1901,2164,8283,107,4722,236787,107,236820,236909,111457,111038,106,107,105,4368,107,248294,242846],"total_duration":3489293341,"load_duration":3246914927,"prompt_eval_count":118,"prompt_eval_duration":194899198,"eval_count":3,"eval_duration":46976862} +[2025-09-20 13:49:21] [INFO] [ai:140] llm-61c3e486 LLM response model=gemma3:12b duration=3.504s summary=๐Ÿคจ๐Ÿค” +[2025-09-20 13:49:21] [DEBUG] [ai:142] llm-61c3e486 LLM raw response: {'model': 'gemma3:12b', 'created_at': '2025-09-20T17:49:21.101796509Z', 'response': '๐Ÿคจ๐Ÿค”', 'done': True, 'done_reason': 'stop', 'context': [105, 2364, 107, 236820, 236909, 9731, 111038, 3048, 659, 555, 1277, 236756, 3764, 5400, 699, 219769, 208651, 751, 119814, 236761, 1599, 236858, 500, 16690, 236762, 236764, 8632, 236764, 532, 1378, 14620, 236764, 840, 19297, 20111, 529, 822, 3272, 236761, 95419, 528, 496, 4532, 15737, 236761, 15428, 19921, 611, 236789, 500, 496, 9894, 21603, 236909, 643, 111038, 2887, 236787, 1599, 659, 22616, 236764, 614, 73296, 2872, 1015, 6178, 111730, 531, 9434, 531, 2430, 10396, 236761, 17770, 496, 3618, 236764, 994, 44917, 236743, 236770, 236964, 236800, 22690, 111730, 528, 3072, 531, 506, 15737, 653, 3004, 236761, 2301, 1816, 236761, 108, 2887, 236787, 1717, 1901, 2164, 8283, 107, 4722, 236787, 107, 236820, 236909, 111457, 111038, 106, 107, 105, 4368, 107, 248294, 242846], 'total_duration': 3489293341, 'load_duration': 3246914927, 'prompt_eval_count': 118, 'prompt_eval_duration': 194899198, 'eval_count': 3, 'eval_duration': 46976862} +[2025-09-20 13:49:21] [DEBUG] [autochat:113] ๐ŸŽญ Emoji suggestion from LLM: ๐Ÿคจ๐Ÿค” +[2025-09-20 13:49:21] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.87) +[2025-09-20 13:49:21] [INFO] [ai:93] ๐Ÿง  Preloading model: gemma3:12b +[2025-09-20 13:49:21] [DEBUG] [ai:193] llm-976eff9f Raw response status=200 +[2025-09-20 13:49:21] [DEBUG] [ai:194] llm-976eff9f Raw response body={"model":"gemma3:12b","created_at":"2025-09-20T17:49:21.156425141Z","response":"๐Ÿค”๐Ÿ˜ฌ","done":true,"done_reason":"stop","context":[105,2364,107,236820,236909,9731,111038,3048,659,555,1277,236756,3764,5400,699,219769,208651,751,119814,236761,1599,236858,500,16690,236762,236764,8632,236764,532,1378,14620,236764,840,19297,20111,529,822,3272,236761,95419,528,496,4532,15737,236761,15428,19921,611,236789,500,496,9894,21603,236909,643,111038,2887,236787,1599,659,22616,236764,614,73296,2872,1015,6178,111730,531,9434,531,2430,10396,236761,17770,496,3618,236764,994,44917,236743,236770,236964,236800,22690,111730,528,3072,531,506,15737,653,3004,236761,2301,1816,236761,108,2887,236787,1717,1901,2164,8283,107,4722,236787,107,236820,236909,111457,111038,106,107,105,4368,107,242846,244993],"total_duration":2146485122,"load_duration":1849561903,"prompt_eval_count":118,"prompt_eval_duration":14104982,"eval_count":3,"eval_duration":27782043} +[2025-09-20 13:49:21] [INFO] [ai:140] llm-976eff9f LLM response model=gemma3:12b duration=2.150s summary=๐Ÿค”๐Ÿ˜ฌ +[2025-09-20 13:49:21] [DEBUG] [ai:142] llm-976eff9f LLM raw response: {'model': 'gemma3:12b', 'created_at': '2025-09-20T17:49:21.156425141Z', 'response': '๐Ÿค”๐Ÿ˜ฌ', 'done': True, 'done_reason': 'stop', 'context': [105, 2364, 107, 236820, 236909, 9731, 111038, 3048, 659, 555, 1277, 236756, 3764, 5400, 699, 219769, 208651, 751, 119814, 236761, 1599, 236858, 500, 16690, 236762, 236764, 8632, 236764, 532, 1378, 14620, 236764, 840, 19297, 20111, 529, 822, 3272, 236761, 95419, 528, 496, 4532, 15737, 236761, 15428, 19921, 611, 236789, 500, 496, 9894, 21603, 236909, 643, 111038, 2887, 236787, 1599, 659, 22616, 236764, 614, 73296, 2872, 1015, 6178, 111730, 531, 9434, 531, 2430, 10396, 236761, 17770, 496, 3618, 236764, 994, 44917, 236743, 236770, 236964, 236800, 22690, 111730, 528, 3072, 531, 506, 15737, 653, 3004, 236761, 2301, 1816, 236761, 108, 2887, 236787, 1717, 1901, 2164, 8283, 107, 4722, 236787, 107, 236820, 236909, 111457, 111038, 106, 107, 105, 4368, 107, 242846, 244993], 'total_duration': 2146485122, 'load_duration': 1849561903, 'prompt_eval_count': 118, 'prompt_eval_duration': 14104982, 'eval_count': 3, 'eval_duration': 27782043} +[2025-09-20 13:49:21] [DEBUG] [autochat:113] ๐ŸŽญ Emoji suggestion from LLM: ๐Ÿค”๐Ÿ˜ฌ +[2025-09-20 13:49:21] [INFO] [ai:100] ๐Ÿ“ฆ Model pull started successfully. +[2025-09-20 13:49:21] [INFO] [ai:132] llm-dde13673 LLM request start model=gemma3:12b user=- context_len=0 +[2025-09-20 13:49:21] [DEBUG] [ai:184] llm-dde13673 Sending payload to Ollama: model=gemma3:12b user=None +[2025-09-20 13:49:21] [DEBUG] [ai:185] llm-dde13673 Payload size=405 chars +[2025-09-20 13:49:21] [DEBUG] [ai:193] llm-dde13673 Raw response status=200 +[2025-09-20 13:49:21] [DEBUG] [ai:194] llm-dde13673 Raw response body={"model":"gemma3:12b","created_at":"2025-09-20T17:49:21.525552271Z","response":"๐Ÿ‘€โœจ","done":true,"done_reason":"stop","context":[105,2364,107,236820,236909,9731,111038,3048,659,555,1277,236756,3764,5400,699,219769,208651,751,119814,236761,1599,236858,500,16690,236762,236764,8632,236764,532,1378,14620,236764,840,19297,20111,529,822,3272,236761,95419,528,496,4532,15737,236761,15428,19921,611,236789,500,496,9894,21603,236909,643,111038,2887,236787,1599,659,22616,236764,614,73296,2872,1015,6178,111730,531,9434,531,2430,10396,236761,17770,496,3618,236764,994,44917,236743,236770,236964,236800,22690,111730,528,3072,531,506,15737,653,3004,236761,2301,1816,236761,108,2887,236787,1717,1901,2164,8283,107,4722,236787,107,236820,236909,111457,111038,106,107,105,4368,107,242509,239794],"total_duration":174717752,"load_duration":133902968,"prompt_eval_count":118,"prompt_eval_duration":13689683,"eval_count":3,"eval_duration":26736373} +[2025-09-20 13:49:21] [INFO] [ai:140] llm-dde13673 LLM response model=gemma3:12b duration=0.177s summary=๐Ÿ‘€โœจ +[2025-09-20 13:49:21] [DEBUG] [ai:142] llm-dde13673 LLM raw response: {'model': 'gemma3:12b', 'created_at': '2025-09-20T17:49:21.525552271Z', 'response': '๐Ÿ‘€โœจ', 'done': True, 'done_reason': 'stop', 'context': [105, 2364, 107, 236820, 236909, 9731, 111038, 3048, 659, 555, 1277, 236756, 3764, 5400, 699, 219769, 208651, 751, 119814, 236761, 1599, 236858, 500, 16690, 236762, 236764, 8632, 236764, 532, 1378, 14620, 236764, 840, 19297, 20111, 529, 822, 3272, 236761, 95419, 528, 496, 4532, 15737, 236761, 15428, 19921, 611, 236789, 500, 496, 9894, 21603, 236909, 643, 111038, 2887, 236787, 1599, 659, 22616, 236764, 614, 73296, 2872, 1015, 6178, 111730, 531, 9434, 531, 2430, 10396, 236761, 17770, 496, 3618, 236764, 994, 44917, 236743, 236770, 236964, 236800, 22690, 111730, 528, 3072, 531, 506, 15737, 653, 3004, 236761, 2301, 1816, 236761, 108, 2887, 236787, 1717, 1901, 2164, 8283, 107, 4722, 236787, 107, 236820, 236909, 111457, 111038, 106, 107, 105, 4368, 107, 242509, 239794], 'total_duration': 174717752, 'load_duration': 133902968, 'prompt_eval_count': 118, 'prompt_eval_duration': 13689683, 'eval_count': 3, 'eval_duration': 26736373} +[2025-09-20 13:49:21] [DEBUG] [autochat:113] ๐ŸŽญ Emoji suggestion from LLM: ๐Ÿ‘€โœจ +[2025-09-20 13:49:22] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.92) +[2025-09-20 13:49:22] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 13:49:22] [INFO] [bot:91] Command modfile on cooldown. Retry after 1.5 seconds. +[2025-09-20 13:49:22] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.56) +[2025-09-20 13:49:22] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.23) +[2025-09-20 13:49:22] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 13:49:22] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.45) +[2025-09-20 13:49:22] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.51) +[2025-09-20 13:49:22] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 13:49:22] [INFO] [bot:91] Command modfile on cooldown. Retry after 1.3 seconds. +[2025-09-20 13:49:22] [INFO] [ai:93] ๐Ÿง  Preloading model: gemma3:12b +[2025-09-20 13:49:23] [INFO] [ai:100] ๐Ÿ“ฆ Model pull started successfully. +[2025-09-20 13:49:23] [INFO] [ai:132] llm-d846ef0f LLM request start model=gemma3:12b user=- context_len=0 +[2025-09-20 13:49:23] [DEBUG] [ai:184] llm-d846ef0f Sending payload to Ollama: model=gemma3:12b user=None +[2025-09-20 13:49:23] [DEBUG] [ai:185] llm-d846ef0f Payload size=405 chars +[2025-09-20 13:49:23] [DEBUG] [ai:193] llm-d846ef0f Raw response status=200 +[2025-09-20 13:49:23] [DEBUG] [ai:194] llm-d846ef0f Raw response body={"model":"gemma3:12b","created_at":"2025-09-20T17:49:23.330237269Z","response":"๐Ÿค”๐Ÿคจ","done":true,"done_reason":"stop","context":[105,2364,107,236820,236909,9731,111038,3048,659,555,1277,236756,3764,5400,699,219769,208651,751,119814,236761,1599,236858,500,16690,236762,236764,8632,236764,532,1378,14620,236764,840,19297,20111,529,822,3272,236761,95419,528,496,4532,15737,236761,15428,19921,611,236789,500,496,9894,21603,236909,643,111038,2887,236787,1599,659,22616,236764,614,73296,2872,1015,6178,111730,531,9434,531,2430,10396,236761,17770,496,3618,236764,994,44917,236743,236770,236964,236800,22690,111730,528,3072,531,506,15737,653,3004,236761,2301,1816,236761,108,2887,236787,1717,1901,2164,8283,107,4722,236787,107,236820,236909,111457,111038,106,107,105,4368,107,242846,248294],"total_duration":163817377,"load_duration":121119262,"prompt_eval_count":118,"prompt_eval_duration":13784526,"eval_count":3,"eval_duration":28537910} +[2025-09-20 13:49:23] [INFO] [ai:140] llm-d846ef0f LLM response model=gemma3:12b duration=0.166s summary=๐Ÿค”๐Ÿคจ +[2025-09-20 13:49:23] [DEBUG] [ai:142] llm-d846ef0f LLM raw response: {'model': 'gemma3:12b', 'created_at': '2025-09-20T17:49:23.330237269Z', 'response': '๐Ÿค”๐Ÿคจ', 'done': True, 'done_reason': 'stop', 'context': [105, 2364, 107, 236820, 236909, 9731, 111038, 3048, 659, 555, 1277, 236756, 3764, 5400, 699, 219769, 208651, 751, 119814, 236761, 1599, 236858, 500, 16690, 236762, 236764, 8632, 236764, 532, 1378, 14620, 236764, 840, 19297, 20111, 529, 822, 3272, 236761, 95419, 528, 496, 4532, 15737, 236761, 15428, 19921, 611, 236789, 500, 496, 9894, 21603, 236909, 643, 111038, 2887, 236787, 1599, 659, 22616, 236764, 614, 73296, 2872, 1015, 6178, 111730, 531, 9434, 531, 2430, 10396, 236761, 17770, 496, 3618, 236764, 994, 44917, 236743, 236770, 236964, 236800, 22690, 111730, 528, 3072, 531, 506, 15737, 653, 3004, 236761, 2301, 1816, 236761, 108, 2887, 236787, 1717, 1901, 2164, 8283, 107, 4722, 236787, 107, 236820, 236909, 111457, 111038, 106, 107, 105, 4368, 107, 242846, 248294], 'total_duration': 163817377, 'load_duration': 121119262, 'prompt_eval_count': 118, 'prompt_eval_duration': 13784526, 'eval_count': 3, 'eval_duration': 28537910} +[2025-09-20 13:49:23] [DEBUG] [autochat:113] ๐ŸŽญ Emoji suggestion from LLM: ๐Ÿค”๐Ÿคจ +[2025-09-20 13:49:24] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 13:49:24] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 13:50:31] [INFO] [ai:40] ๐Ÿ” Modelfile loaded: ../examples/gojo.mod +[2025-09-20 13:50:31] [INFO] [bot:55] ๐Ÿ” Loaded MODEL_NAME from .env: gemma3:12b +[2025-09-20 13:50:31] [INFO] [bot:57] ๐Ÿงน Attempting to clear VRAM before loading gemma3:12b... +[2025-09-20 13:50:31] [INFO] [ai:113] ๐Ÿงน Sending safe unload request for `gemma3:12b` +[2025-09-20 13:50:31] [INFO] [ai:120] ๐Ÿงฝ Ollama unload response: 200 - {"model":"gemma3:12b","created_at":"2025-09-20T17:50:31.117244212Z","response":"","done":true,"done_reason":"unload"} +[2025-09-20 13:50:31] [INFO] [ai:93] ๐Ÿง  Preloading model: gemma3:12b +[2025-09-20 13:50:31] [INFO] [ai:100] ๐Ÿ“ฆ Model pull started successfully. +[2025-09-20 13:50:31] [INFO] [bot:61] ๐Ÿš€ Model `gemma3:12b` preloaded on startup. +[2025-09-20 13:50:31] [INFO] [bot:64] โœ… Final model in use: gemma3:12b +[2025-09-20 13:50:33] [INFO] [bot:187] Logged in as AI Bot +[2025-09-20 13:50:33] [INFO] [scheduler:29] ๐Ÿ›‘ Scheduler disabled in config. +[2025-09-20 13:50:43] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.30) +[2025-09-20 13:50:43] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.24) +[2025-09-20 13:50:43] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 13:50:43] [INFO] [bot:91] Command modfile info on cooldown. Retry after 10.0 seconds. +[2025-09-20 13:50:43] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.11) +[2025-09-20 13:50:43] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.54) +[2025-09-20 13:50:43] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 13:50:43] [DEBUG] [bot:135] record_global_cooldown: recorded for user=161149541171593216 +[2025-09-20 13:50:43] [DEBUG] [bot:135] record_global_cooldown: recorded for user=161149541171593216 +[2025-09-20 13:50:46] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.60) +[2025-09-20 13:50:46] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 1.00) +[2025-09-20 13:50:46] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 13:50:46] [INFO] [bot:91] Command modfile on cooldown. Retry after 6.7 seconds. +[2025-09-20 13:50:46] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.98) +[2025-09-20 13:50:46] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.60) +[2025-09-20 13:50:46] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 13:50:46] [DEBUG] [bot:135] record_global_cooldown: recorded for user=161149541171593216 +[2025-09-20 13:50:46] [DEBUG] [bot:135] record_global_cooldown: recorded for user=161149541171593216 +[2025-09-20 13:50:49] [INFO] [ai:93] ๐Ÿง  Preloading model: gemma3:12b +[2025-09-20 13:50:49] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.74) +[2025-09-20 13:50:49] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.92) +[2025-09-20 13:50:49] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 13:50:49] [DEBUG] [bot:135] record_global_cooldown: recorded for user=161149541171593216 +[2025-09-20 13:50:49] [DEBUG] [bot:135] record_global_cooldown: recorded for user=161149541171593216 +[2025-09-20 13:50:49] [INFO] [ai:100] ๐Ÿ“ฆ Model pull started successfully. +[2025-09-20 13:50:49] [INFO] [ai:132] llm-94b8cea1 LLM request start model=gemma3:12b user=- context_len=0 +[2025-09-20 13:50:49] [DEBUG] [ai:184] llm-94b8cea1 Sending payload to Ollama: model=gemma3:12b user=None +[2025-09-20 13:50:49] [DEBUG] [ai:185] llm-94b8cea1 Payload size=405 chars +[2025-09-20 13:50:53] [DEBUG] [ai:193] llm-94b8cea1 Raw response status=200 +[2025-09-20 13:50:53] [DEBUG] [ai:194] llm-94b8cea1 Raw response body={"model":"gemma3:12b","created_at":"2025-09-20T17:50:53.290939729Z","response":"๐Ÿ˜‰โœจ","done":true,"done_reason":"stop","context":[105,2364,107,236820,236909,9731,111038,3048,659,555,1277,236756,3764,5400,699,219769,208651,751,119814,236761,1599,236858,500,16690,236762,236764,8632,236764,532,1378,14620,236764,840,19297,20111,529,822,3272,236761,95419,528,496,4532,15737,236761,15428,19921,611,236789,500,496,9894,21603,236909,643,111038,2887,236787,1599,659,22616,236764,614,73296,2872,1015,6178,111730,531,9434,531,2430,10396,236761,17770,496,3618,236764,994,44917,236743,236770,236964,236800,22690,111730,528,3072,531,506,15737,653,3004,236761,2301,1816,236761,108,2887,236787,1717,1901,2164,8283,107,4722,236787,107,236820,236909,111457,111038,106,107,105,4368,107,241234,239794],"total_duration":3560561662,"load_duration":3307510176,"prompt_eval_count":118,"prompt_eval_duration":204685840,"eval_count":3,"eval_duration":47908818} +[2025-09-20 13:50:53] [INFO] [ai:140] llm-94b8cea1 LLM response model=gemma3:12b duration=3.580s summary=๐Ÿ˜‰โœจ +[2025-09-20 13:50:53] [DEBUG] [ai:142] llm-94b8cea1 LLM raw response: {'model': 'gemma3:12b', 'created_at': '2025-09-20T17:50:53.290939729Z', 'response': '๐Ÿ˜‰โœจ', 'done': True, 'done_reason': 'stop', 'context': [105, 2364, 107, 236820, 236909, 9731, 111038, 3048, 659, 555, 1277, 236756, 3764, 5400, 699, 219769, 208651, 751, 119814, 236761, 1599, 236858, 500, 16690, 236762, 236764, 8632, 236764, 532, 1378, 14620, 236764, 840, 19297, 20111, 529, 822, 3272, 236761, 95419, 528, 496, 4532, 15737, 236761, 15428, 19921, 611, 236789, 500, 496, 9894, 21603, 236909, 643, 111038, 2887, 236787, 1599, 659, 22616, 236764, 614, 73296, 2872, 1015, 6178, 111730, 531, 9434, 531, 2430, 10396, 236761, 17770, 496, 3618, 236764, 994, 44917, 236743, 236770, 236964, 236800, 22690, 111730, 528, 3072, 531, 506, 15737, 653, 3004, 236761, 2301, 1816, 236761, 108, 2887, 236787, 1717, 1901, 2164, 8283, 107, 4722, 236787, 107, 236820, 236909, 111457, 111038, 106, 107, 105, 4368, 107, 241234, 239794], 'total_duration': 3560561662, 'load_duration': 3307510176, 'prompt_eval_count': 118, 'prompt_eval_duration': 204685840, 'eval_count': 3, 'eval_duration': 47908818} +[2025-09-20 13:50:53] [DEBUG] [autochat:113] ๐ŸŽญ Emoji suggestion from LLM: ๐Ÿ˜‰โœจ +[2025-09-20 13:50:53] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.54) +[2025-09-20 13:50:53] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 13:50:53] [INFO] [bot:91] Command modfile info on cooldown. Retry after 10.0 seconds. +[2025-09-20 13:53:30] [INFO] [ai:40] ๐Ÿ” Modelfile loaded: ../examples/gojo.mod +[2025-09-20 13:53:30] [INFO] [bot:59] ๐Ÿ” Loaded MODEL_NAME from .env: gemma3:12b +[2025-09-20 13:53:30] [INFO] [bot:61] ๐Ÿงน Attempting to clear VRAM before loading gemma3:12b... +[2025-09-20 13:53:30] [INFO] [ai:113] ๐Ÿงน Sending safe unload request for `gemma3:12b` +[2025-09-20 13:53:30] [INFO] [ai:120] ๐Ÿงฝ Ollama unload response: 200 - {"model":"gemma3:12b","created_at":"2025-09-20T17:53:30.771685539Z","response":"","done":true,"done_reason":"unload"} +[2025-09-20 13:53:30] [INFO] [ai:93] ๐Ÿง  Preloading model: gemma3:12b +[2025-09-20 13:53:30] [INFO] [ai:100] ๐Ÿ“ฆ Model pull started successfully. +[2025-09-20 13:53:30] [INFO] [bot:65] ๐Ÿš€ Model `gemma3:12b` preloaded on startup. +[2025-09-20 13:53:30] [INFO] [bot:68] โœ… Final model in use: gemma3:12b +[2025-09-20 13:53:33] [INFO] [bot:206] Logged in as AI Bot +[2025-09-20 13:53:33] [INFO] [scheduler:29] ๐Ÿ›‘ Scheduler disabled in config. +[2025-09-20 13:55:07] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.23) +[2025-09-20 13:55:07] [INFO] [ai:93] ๐Ÿง  Preloading model: gemma3:12b +[2025-09-20 13:55:07] [INFO] [ai:93] ๐Ÿง  Preloading model: gemma3:12b +[2025-09-20 13:55:07] [INFO] [ai:100] ๐Ÿ“ฆ Model pull started successfully. +[2025-09-20 13:55:07] [INFO] [ai:132] llm-7f0b9079 LLM request start model=gemma3:12b user=- context_len=0 +[2025-09-20 13:55:07] [DEBUG] [ai:184] llm-7f0b9079 Sending payload to Ollama: model=gemma3:12b user=None +[2025-09-20 13:55:07] [DEBUG] [ai:185] llm-7f0b9079 Payload size=405 chars +[2025-09-20 13:55:07] [INFO] [ai:100] ๐Ÿ“ฆ Model pull started successfully. +[2025-09-20 13:55:07] [INFO] [ai:132] llm-183a128d LLM request start model=gemma3:12b user=- context_len=0 +[2025-09-20 13:55:07] [DEBUG] [ai:184] llm-183a128d Sending payload to Ollama: model=gemma3:12b user=None +[2025-09-20 13:55:07] [DEBUG] [ai:185] llm-183a128d Payload size=405 chars +[2025-09-20 13:55:11] [DEBUG] [ai:193] llm-183a128d Raw response status=200 +[2025-09-20 13:55:11] [DEBUG] [ai:194] llm-183a128d Raw response body={"model":"gemma3:12b","created_at":"2025-09-20T17:55:11.180434491Z","response":"... Seriously? You're showing *me* a modfile? Do you have any idea who I am? ๐Ÿ™„๐Ÿ˜‚โœจ","done":true,"done_reason":"stop","context":[105,2364,107,236820,236909,9731,111038,3048,659,555,1277,236756,3764,5400,699,219769,208651,751,119814,236761,1599,236858,500,16690,236762,236764,8632,236764,532,1378,14620,236764,840,19297,20111,529,822,3272,236761,95419,528,496,4532,15737,236761,15428,19921,611,236789,500,496,9894,21603,236909,643,111038,2887,236787,1599,659,22616,236764,614,73296,2872,1015,6178,111730,531,9434,531,2430,10396,236761,17770,496,3618,236764,994,44917,236743,236770,236964,236800,22690,111730,528,3072,531,506,15737,653,3004,236761,2301,1816,236761,108,2887,236787,1717,1901,2164,8283,107,4722,236787,107,236820,236909,111457,111038,106,107,105,4368,107,1390,96612,236881,1599,236789,500,6807,808,1336,236829,496,1120,2164,236881,3574,611,735,1027,4317,1015,564,1006,236881,236743,243810,239927,239794],"total_duration":3853342977,"load_duration":3249122916,"prompt_eval_count":118,"prompt_eval_duration":213217051,"eval_count":28,"eval_duration":390608580} +[2025-09-20 13:55:11] [INFO] [ai:140] llm-183a128d LLM response model=gemma3:12b duration=3.870s summary=... Seriously? You're showing *me* a modfile? Do you have any idea who I am? ๐Ÿ™„๐Ÿ˜‚โœจ +[2025-09-20 13:55:11] [DEBUG] [ai:142] llm-183a128d LLM raw response: {'model': 'gemma3:12b', 'created_at': '2025-09-20T17:55:11.180434491Z', 'response': "... Seriously? You're showing *me* a modfile? Do you have any idea who I am? ๐Ÿ™„๐Ÿ˜‚โœจ", 'done': True, 'done_reason': 'stop', 'context': [105, 2364, 107, 236820, 236909, 9731, 111038, 3048, 659, 555, 1277, 236756, 3764, 5400, 699, 219769, 208651, 751, 119814, 236761, 1599, 236858, 500, 16690, 236762, 236764, 8632, 236764, 532, 1378, 14620, 236764, 840, 19297, 20111, 529, 822, 3272, 236761, 95419, 528, 496, 4532, 15737, 236761, 15428, 19921, 611, 236789, 500, 496, 9894, 21603, 236909, 643, 111038, 2887, 236787, 1599, 659, 22616, 236764, 614, 73296, 2872, 1015, 6178, 111730, 531, 9434, 531, 2430, 10396, 236761, 17770, 496, 3618, 236764, 994, 44917, 236743, 236770, 236964, 236800, 22690, 111730, 528, 3072, 531, 506, 15737, 653, 3004, 236761, 2301, 1816, 236761, 108, 2887, 236787, 1717, 1901, 2164, 8283, 107, 4722, 236787, 107, 236820, 236909, 111457, 111038, 106, 107, 105, 4368, 107, 1390, 96612, 236881, 1599, 236789, 500, 6807, 808, 1336, 236829, 496, 1120, 2164, 236881, 3574, 611, 735, 1027, 4317, 1015, 564, 1006, 236881, 236743, 243810, 239927, 239794], 'total_duration': 3853342977, 'load_duration': 3249122916, 'prompt_eval_count': 118, 'prompt_eval_duration': 213217051, 'eval_count': 28, 'eval_duration': 390608580} +[2025-09-20 13:55:11] [DEBUG] [autochat:113] ๐ŸŽญ Emoji suggestion from LLM: ... Seriously? You're showing *me* a modfile? Do you have any idea who I am? ๐Ÿ™„๐Ÿ˜‚โœจ +[2025-09-20 13:55:11] [DEBUG] [ai:193] llm-7f0b9079 Raw response status=200 +[2025-09-20 13:55:11] [DEBUG] [ai:194] llm-7f0b9079 Raw response body={"model":"gemma3:12b","created_at":"2025-09-20T17:55:11.238143368Z","response":"๐Ÿ˜‰โœจ","done":true,"done_reason":"stop","context":[105,2364,107,236820,236909,9731,111038,3048,659,555,1277,236756,3764,5400,699,219769,208651,751,119814,236761,1599,236858,500,16690,236762,236764,8632,236764,532,1378,14620,236764,840,19297,20111,529,822,3272,236761,95419,528,496,4532,15737,236761,15428,19921,611,236789,500,496,9894,21603,236909,643,111038,2887,236787,1599,659,22616,236764,614,73296,2872,1015,6178,111730,531,9434,531,2430,10396,236761,17770,496,3618,236764,994,44917,236743,236770,236964,236800,22690,111730,528,3072,531,506,15737,653,3004,236761,2301,1816,236761,108,2887,236787,1717,1901,2164,8283,107,4722,236787,107,236820,236909,111457,111038,106,107,105,4368,107,241234,239794],"total_duration":3917611770,"load_duration":3255746486,"prompt_eval_count":118,"prompt_eval_duration":15563818,"eval_count":3,"eval_duration":26842685} +[2025-09-20 13:55:11] [INFO] [ai:140] llm-7f0b9079 LLM response model=gemma3:12b duration=3.920s summary=๐Ÿ˜‰โœจ +[2025-09-20 13:55:11] [DEBUG] [ai:142] llm-7f0b9079 LLM raw response: {'model': 'gemma3:12b', 'created_at': '2025-09-20T17:55:11.238143368Z', 'response': '๐Ÿ˜‰โœจ', 'done': True, 'done_reason': 'stop', 'context': [105, 2364, 107, 236820, 236909, 9731, 111038, 3048, 659, 555, 1277, 236756, 3764, 5400, 699, 219769, 208651, 751, 119814, 236761, 1599, 236858, 500, 16690, 236762, 236764, 8632, 236764, 532, 1378, 14620, 236764, 840, 19297, 20111, 529, 822, 3272, 236761, 95419, 528, 496, 4532, 15737, 236761, 15428, 19921, 611, 236789, 500, 496, 9894, 21603, 236909, 643, 111038, 2887, 236787, 1599, 659, 22616, 236764, 614, 73296, 2872, 1015, 6178, 111730, 531, 9434, 531, 2430, 10396, 236761, 17770, 496, 3618, 236764, 994, 44917, 236743, 236770, 236964, 236800, 22690, 111730, 528, 3072, 531, 506, 15737, 653, 3004, 236761, 2301, 1816, 236761, 108, 2887, 236787, 1717, 1901, 2164, 8283, 107, 4722, 236787, 107, 236820, 236909, 111457, 111038, 106, 107, 105, 4368, 107, 241234, 239794], 'total_duration': 3917611770, 'load_duration': 3255746486, 'prompt_eval_count': 118, 'prompt_eval_duration': 15563818, 'eval_count': 3, 'eval_duration': 26842685} +[2025-09-20 13:55:11] [DEBUG] [autochat:113] ๐ŸŽญ Emoji suggestion from LLM: ๐Ÿ˜‰โœจ +[2025-09-20 13:55:12] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.52) +[2025-09-20 13:55:12] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 13:55:12] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 13:55:12] [INFO] [bot:91] Command modfile info on cooldown. Retry after 10.0 seconds. +[2025-09-20 13:55:16] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.81) +[2025-09-20 13:55:16] [INFO] [ai:93] ๐Ÿง  Preloading model: gemma3:12b +[2025-09-20 13:55:16] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.16) +[2025-09-20 13:55:16] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.13) +[2025-09-20 13:55:16] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 13:55:16] [INFO] [ai:100] ๐Ÿ“ฆ Model pull started successfully. +[2025-09-20 13:55:16] [INFO] [ai:132] llm-559e1b09 LLM request start model=gemma3:12b user=- context_len=0 +[2025-09-20 13:55:16] [DEBUG] [ai:184] llm-559e1b09 Sending payload to Ollama: model=gemma3:12b user=None +[2025-09-20 13:55:16] [DEBUG] [ai:185] llm-559e1b09 Payload size=405 chars +[2025-09-20 13:55:16] [DEBUG] [ai:193] llm-559e1b09 Raw response status=200 +[2025-09-20 13:55:16] [DEBUG] [ai:194] llm-559e1b09 Raw response body={"model":"gemma3:12b","created_at":"2025-09-20T17:55:16.498528929Z","response":"๐Ÿค”๐Ÿคจ","done":true,"done_reason":"stop","context":[105,2364,107,236820,236909,9731,111038,3048,659,555,1277,236756,3764,5400,699,219769,208651,751,119814,236761,1599,236858,500,16690,236762,236764,8632,236764,532,1378,14620,236764,840,19297,20111,529,822,3272,236761,95419,528,496,4532,15737,236761,15428,19921,611,236789,500,496,9894,21603,236909,643,111038,2887,236787,1599,659,22616,236764,614,73296,2872,1015,6178,111730,531,9434,531,2430,10396,236761,17770,496,3618,236764,994,44917,236743,236770,236964,236800,22690,111730,528,3072,531,506,15737,653,3004,236761,2301,1816,236761,108,2887,236787,1717,1901,2164,8283,107,4722,236787,107,236820,236909,111457,111038,106,107,105,4368,107,242846,248294],"total_duration":174819536,"load_duration":132978259,"prompt_eval_count":118,"prompt_eval_duration":14160875,"eval_count":3,"eval_duration":27344972} +[2025-09-20 13:55:16] [INFO] [ai:140] llm-559e1b09 LLM response model=gemma3:12b duration=0.177s summary=๐Ÿค”๐Ÿคจ +[2025-09-20 13:55:16] [DEBUG] [ai:142] llm-559e1b09 LLM raw response: {'model': 'gemma3:12b', 'created_at': '2025-09-20T17:55:16.498528929Z', 'response': '๐Ÿค”๐Ÿคจ', 'done': True, 'done_reason': 'stop', 'context': [105, 2364, 107, 236820, 236909, 9731, 111038, 3048, 659, 555, 1277, 236756, 3764, 5400, 699, 219769, 208651, 751, 119814, 236761, 1599, 236858, 500, 16690, 236762, 236764, 8632, 236764, 532, 1378, 14620, 236764, 840, 19297, 20111, 529, 822, 3272, 236761, 95419, 528, 496, 4532, 15737, 236761, 15428, 19921, 611, 236789, 500, 496, 9894, 21603, 236909, 643, 111038, 2887, 236787, 1599, 659, 22616, 236764, 614, 73296, 2872, 1015, 6178, 111730, 531, 9434, 531, 2430, 10396, 236761, 17770, 496, 3618, 236764, 994, 44917, 236743, 236770, 236964, 236800, 22690, 111730, 528, 3072, 531, 506, 15737, 653, 3004, 236761, 2301, 1816, 236761, 108, 2887, 236787, 1717, 1901, 2164, 8283, 107, 4722, 236787, 107, 236820, 236909, 111457, 111038, 106, 107, 105, 4368, 107, 242846, 248294], 'total_duration': 174819536, 'load_duration': 132978259, 'prompt_eval_count': 118, 'prompt_eval_duration': 14160875, 'eval_count': 3, 'eval_duration': 27344972} +[2025-09-20 13:55:16] [DEBUG] [autochat:113] ๐ŸŽญ Emoji suggestion from LLM: ๐Ÿค”๐Ÿคจ +[2025-09-20 13:55:17] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 13:55:17] [INFO] [bot:91] Command modfile on cooldown. Retry after 5.2 seconds. +[2025-09-20 13:56:34] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.18) +[2025-09-20 13:56:34] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.11) +[2025-09-20 13:56:34] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 13:56:34] [INFO] [bot:91] Command modfile info on cooldown. Retry after 10.0 seconds. +[2025-09-20 13:56:39] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.88) +[2025-09-20 13:56:39] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.15) +[2025-09-20 13:56:39] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 13:56:39] [INFO] [bot:91] Command modfile on cooldown. Retry after 5.1 seconds. +[2025-09-20 13:56:42] [INFO] [ai:93] ๐Ÿง  Preloading model: gemma3:12b +[2025-09-20 13:56:42] [INFO] [ai:100] ๐Ÿ“ฆ Model pull started successfully. +[2025-09-20 13:56:42] [INFO] [ai:132] llm-c832dd3d LLM request start model=gemma3:12b user=- context_len=0 +[2025-09-20 13:56:42] [DEBUG] [ai:184] llm-c832dd3d Sending payload to Ollama: model=gemma3:12b user=None +[2025-09-20 13:56:42] [DEBUG] [ai:185] llm-c832dd3d Payload size=405 chars +[2025-09-20 13:56:42] [DEBUG] [ai:193] llm-c832dd3d Raw response status=200 +[2025-09-20 13:56:42] [DEBUG] [ai:194] llm-c832dd3d Raw response body={"model":"gemma3:12b","created_at":"2025-09-20T17:56:42.562919155Z","response":"๐Ÿค”๐Ÿคจ","done":true,"done_reason":"stop","context":[105,2364,107,236820,236909,9731,111038,3048,659,555,1277,236756,3764,5400,699,219769,208651,751,119814,236761,1599,236858,500,16690,236762,236764,8632,236764,532,1378,14620,236764,840,19297,20111,529,822,3272,236761,95419,528,496,4532,15737,236761,15428,19921,611,236789,500,496,9894,21603,236909,643,111038,2887,236787,1599,659,22616,236764,614,73296,2872,1015,6178,111730,531,9434,531,2430,10396,236761,17770,496,3618,236764,994,44917,236743,236770,236964,236800,22690,111730,528,3072,531,506,15737,653,3004,236761,2301,1816,236761,108,2887,236787,1717,1901,2164,8283,107,4722,236787,107,236820,236909,111457,111038,106,107,105,4368,107,242846,248294],"total_duration":198842561,"load_duration":117993519,"prompt_eval_count":118,"prompt_eval_duration":44267326,"eval_count":3,"eval_duration":36267627} +[2025-09-20 13:56:42] [INFO] [ai:140] llm-c832dd3d LLM response model=gemma3:12b duration=0.201s summary=๐Ÿค”๐Ÿคจ +[2025-09-20 13:56:42] [DEBUG] [ai:142] llm-c832dd3d LLM raw response: {'model': 'gemma3:12b', 'created_at': '2025-09-20T17:56:42.562919155Z', 'response': '๐Ÿค”๐Ÿคจ', 'done': True, 'done_reason': 'stop', 'context': [105, 2364, 107, 236820, 236909, 9731, 111038, 3048, 659, 555, 1277, 236756, 3764, 5400, 699, 219769, 208651, 751, 119814, 236761, 1599, 236858, 500, 16690, 236762, 236764, 8632, 236764, 532, 1378, 14620, 236764, 840, 19297, 20111, 529, 822, 3272, 236761, 95419, 528, 496, 4532, 15737, 236761, 15428, 19921, 611, 236789, 500, 496, 9894, 21603, 236909, 643, 111038, 2887, 236787, 1599, 659, 22616, 236764, 614, 73296, 2872, 1015, 6178, 111730, 531, 9434, 531, 2430, 10396, 236761, 17770, 496, 3618, 236764, 994, 44917, 236743, 236770, 236964, 236800, 22690, 111730, 528, 3072, 531, 506, 15737, 653, 3004, 236761, 2301, 1816, 236761, 108, 2887, 236787, 1717, 1901, 2164, 8283, 107, 4722, 236787, 107, 236820, 236909, 111457, 111038, 106, 107, 105, 4368, 107, 242846, 248294], 'total_duration': 198842561, 'load_duration': 117993519, 'prompt_eval_count': 118, 'prompt_eval_duration': 44267326, 'eval_count': 3, 'eval_duration': 36267627} +[2025-09-20 13:56:42] [DEBUG] [autochat:113] ๐ŸŽญ Emoji suggestion from LLM: ๐Ÿค”๐Ÿคจ +[2025-09-20 13:56:43] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.80) +[2025-09-20 13:56:43] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 13:56:43] [INFO] [bot:91] Command modfile on cooldown. Retry after 0.7 seconds. +[2025-09-20 13:56:47] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.32) +[2025-09-20 13:56:47] [INFO] [ai:93] ๐Ÿง  Preloading model: gemma3:12b +[2025-09-20 13:56:48] [INFO] [ai:100] ๐Ÿ“ฆ Model pull started successfully. +[2025-09-20 13:56:48] [INFO] [ai:132] llm-ad7274e6 LLM request start model=gemma3:12b user=- context_len=0 +[2025-09-20 13:56:48] [DEBUG] [ai:184] llm-ad7274e6 Sending payload to Ollama: model=gemma3:12b user=None +[2025-09-20 13:56:48] [DEBUG] [ai:185] llm-ad7274e6 Payload size=405 chars +[2025-09-20 13:56:48] [DEBUG] [ai:193] llm-ad7274e6 Raw response status=200 +[2025-09-20 13:56:48] [DEBUG] [ai:194] llm-ad7274e6 Raw response body={"model":"gemma3:12b","created_at":"2025-09-20T17:56:48.206860269Z","response":"๐Ÿค”๐Ÿคจ","done":true,"done_reason":"stop","context":[105,2364,107,236820,236909,9731,111038,3048,659,555,1277,236756,3764,5400,699,219769,208651,751,119814,236761,1599,236858,500,16690,236762,236764,8632,236764,532,1378,14620,236764,840,19297,20111,529,822,3272,236761,95419,528,496,4532,15737,236761,15428,19921,611,236789,500,496,9894,21603,236909,643,111038,2887,236787,1599,659,22616,236764,614,73296,2872,1015,6178,111730,531,9434,531,2430,10396,236761,17770,496,3618,236764,994,44917,236743,236770,236964,236800,22690,111730,528,3072,531,506,15737,653,3004,236761,2301,1816,236761,108,2887,236787,1717,1901,2164,8283,107,4722,236787,107,236820,236909,111457,111038,106,107,105,4368,107,242846,248294],"total_duration":161685896,"load_duration":119487200,"prompt_eval_count":118,"prompt_eval_duration":13840184,"eval_count":3,"eval_duration":27981864} +[2025-09-20 13:56:48] [INFO] [ai:140] llm-ad7274e6 LLM response model=gemma3:12b duration=0.164s summary=๐Ÿค”๐Ÿคจ +[2025-09-20 13:56:48] [DEBUG] [ai:142] llm-ad7274e6 LLM raw response: {'model': 'gemma3:12b', 'created_at': '2025-09-20T17:56:48.206860269Z', 'response': '๐Ÿค”๐Ÿคจ', 'done': True, 'done_reason': 'stop', 'context': [105, 2364, 107, 236820, 236909, 9731, 111038, 3048, 659, 555, 1277, 236756, 3764, 5400, 699, 219769, 208651, 751, 119814, 236761, 1599, 236858, 500, 16690, 236762, 236764, 8632, 236764, 532, 1378, 14620, 236764, 840, 19297, 20111, 529, 822, 3272, 236761, 95419, 528, 496, 4532, 15737, 236761, 15428, 19921, 611, 236789, 500, 496, 9894, 21603, 236909, 643, 111038, 2887, 236787, 1599, 659, 22616, 236764, 614, 73296, 2872, 1015, 6178, 111730, 531, 9434, 531, 2430, 10396, 236761, 17770, 496, 3618, 236764, 994, 44917, 236743, 236770, 236964, 236800, 22690, 111730, 528, 3072, 531, 506, 15737, 653, 3004, 236761, 2301, 1816, 236761, 108, 2887, 236787, 1717, 1901, 2164, 8283, 107, 4722, 236787, 107, 236820, 236909, 111457, 111038, 106, 107, 105, 4368, 107, 242846, 248294], 'total_duration': 161685896, 'load_duration': 119487200, 'prompt_eval_count': 118, 'prompt_eval_duration': 13840184, 'eval_count': 3, 'eval_duration': 27981864} +[2025-09-20 13:56:48] [DEBUG] [autochat:113] ๐ŸŽญ Emoji suggestion from LLM: ๐Ÿค”๐Ÿคจ +[2025-09-20 13:56:49] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 13:56:49] [INFO] [bot:91] Command modfile info on cooldown. Retry after 10.0 seconds. +[2025-09-20 14:01:11] [INFO] [ai:40] ๐Ÿ” Modelfile loaded: ../examples/gojo.mod +[2025-09-20 14:01:11] [INFO] [bot:61] ๐Ÿ” Loaded MODEL_NAME from .env: gemma3:12b +[2025-09-20 14:01:11] [INFO] [bot:63] ๐Ÿงน Attempting to clear VRAM before loading gemma3:12b... +[2025-09-20 14:01:11] [INFO] [ai:113] ๐Ÿงน Sending safe unload request for `gemma3:12b` +[2025-09-20 14:01:11] [INFO] [ai:120] ๐Ÿงฝ Ollama unload response: 200 - {"model":"gemma3:12b","created_at":"2025-09-20T18:01:11.295351637Z","response":"","done":true,"done_reason":"unload"} +[2025-09-20 14:01:11] [INFO] [ai:93] ๐Ÿง  Preloading model: gemma3:12b +[2025-09-20 14:01:11] [INFO] [ai:100] ๐Ÿ“ฆ Model pull started successfully. +[2025-09-20 14:01:11] [INFO] [bot:67] ๐Ÿš€ Model `gemma3:12b` preloaded on startup. +[2025-09-20 14:01:11] [INFO] [bot:70] โœ… Final model in use: gemma3:12b +[2025-09-20 14:01:15] [INFO] [bot:232] Logged in as AI Bot +[2025-09-20 14:01:15] [INFO] [scheduler:29] ๐Ÿ›‘ Scheduler disabled in config. +[2025-09-20 14:01:19] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.29) +[2025-09-20 14:01:19] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.15) +[2025-09-20 14:01:19] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 14:01:19] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.18) +[2025-09-20 14:01:19] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.29) +[2025-09-20 14:01:19] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 14:01:19] [INFO] [bot:91] Command modfile info on cooldown. Retry after 10.0 seconds. +[2025-09-20 14:01:23] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.77) +[2025-09-20 14:01:23] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.36) +[2025-09-20 14:01:23] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 14:01:23] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.43) +[2025-09-20 14:01:23] [INFO] [ai:93] ๐Ÿง  Preloading model: gemma3:12b +[2025-09-20 14:01:24] [INFO] [ai:100] ๐Ÿ“ฆ Model pull started successfully. +[2025-09-20 14:01:24] [INFO] [ai:132] llm-c7294b9d LLM request start model=gemma3:12b user=- context_len=0 +[2025-09-20 14:01:24] [DEBUG] [ai:184] llm-c7294b9d Sending payload to Ollama: model=gemma3:12b user=None +[2025-09-20 14:01:24] [DEBUG] [ai:185] llm-c7294b9d Payload size=405 chars +[2025-09-20 14:01:27] [INFO] [ai:93] ๐Ÿง  Preloading model: gemma3:12b +[2025-09-20 14:01:27] [INFO] [ai:100] ๐Ÿ“ฆ Model pull started successfully. +[2025-09-20 14:01:27] [INFO] [ai:132] llm-ffe102ac LLM request start model=gemma3:12b user=- context_len=0 +[2025-09-20 14:01:27] [DEBUG] [ai:184] llm-ffe102ac Sending payload to Ollama: model=gemma3:12b user=None +[2025-09-20 14:01:27] [DEBUG] [ai:185] llm-ffe102ac Payload size=405 chars +[2025-09-20 14:01:27] [DEBUG] [ai:193] llm-c7294b9d Raw response status=200 +[2025-09-20 14:01:27] [DEBUG] [ai:194] llm-c7294b9d Raw response body={"model":"gemma3:12b","created_at":"2025-09-20T18:01:27.672872644Z","response":"๐Ÿ˜‚โœจ","done":true,"done_reason":"stop","context":[105,2364,107,236820,236909,9731,111038,3048,659,555,1277,236756,3764,5400,699,219769,208651,751,119814,236761,1599,236858,500,16690,236762,236764,8632,236764,532,1378,14620,236764,840,19297,20111,529,822,3272,236761,95419,528,496,4532,15737,236761,15428,19921,611,236789,500,496,9894,21603,236909,643,111038,2887,236787,1599,659,22616,236764,614,73296,2872,1015,6178,111730,531,9434,531,2430,10396,236761,17770,496,3618,236764,994,44917,236743,236770,236964,236800,22690,111730,528,3072,531,506,15737,653,3004,236761,2301,1816,236761,108,2887,236787,1717,1901,2164,8283,107,4722,236787,107,236820,236909,111457,111038,106,107,105,4368,107,239927,239794],"total_duration":3528677539,"load_duration":3278126973,"prompt_eval_count":118,"prompt_eval_duration":202354037,"eval_count":3,"eval_duration":47494651} +[2025-09-20 14:01:27] [INFO] [ai:140] llm-c7294b9d LLM response model=gemma3:12b duration=3.544s summary=๐Ÿ˜‚โœจ +[2025-09-20 14:01:27] [DEBUG] [ai:142] llm-c7294b9d LLM raw response: {'model': 'gemma3:12b', 'created_at': '2025-09-20T18:01:27.672872644Z', 'response': '๐Ÿ˜‚โœจ', 'done': True, 'done_reason': 'stop', 'context': [105, 2364, 107, 236820, 236909, 9731, 111038, 3048, 659, 555, 1277, 236756, 3764, 5400, 699, 219769, 208651, 751, 119814, 236761, 1599, 236858, 500, 16690, 236762, 236764, 8632, 236764, 532, 1378, 14620, 236764, 840, 19297, 20111, 529, 822, 3272, 236761, 95419, 528, 496, 4532, 15737, 236761, 15428, 19921, 611, 236789, 500, 496, 9894, 21603, 236909, 643, 111038, 2887, 236787, 1599, 659, 22616, 236764, 614, 73296, 2872, 1015, 6178, 111730, 531, 9434, 531, 2430, 10396, 236761, 17770, 496, 3618, 236764, 994, 44917, 236743, 236770, 236964, 236800, 22690, 111730, 528, 3072, 531, 506, 15737, 653, 3004, 236761, 2301, 1816, 236761, 108, 2887, 236787, 1717, 1901, 2164, 8283, 107, 4722, 236787, 107, 236820, 236909, 111457, 111038, 106, 107, 105, 4368, 107, 239927, 239794], 'total_duration': 3528677539, 'load_duration': 3278126973, 'prompt_eval_count': 118, 'prompt_eval_duration': 202354037, 'eval_count': 3, 'eval_duration': 47494651} +[2025-09-20 14:01:27] [DEBUG] [autochat:113] ๐ŸŽญ Emoji suggestion from LLM: ๐Ÿ˜‚โœจ +[2025-09-20 14:01:27] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.54) +[2025-09-20 14:01:27] [INFO] [ai:93] ๐Ÿง  Preloading model: gemma3:12b +[2025-09-20 14:01:27] [DEBUG] [ai:193] llm-ffe102ac Raw response status=200 +[2025-09-20 14:01:27] [DEBUG] [ai:194] llm-ffe102ac Raw response body={"model":"gemma3:12b","created_at":"2025-09-20T18:01:27.728281894Z","response":"๐Ÿค”๐Ÿ’ป","done":true,"done_reason":"stop","context":[105,2364,107,236820,236909,9731,111038,3048,659,555,1277,236756,3764,5400,699,219769,208651,751,119814,236761,1599,236858,500,16690,236762,236764,8632,236764,532,1378,14620,236764,840,19297,20111,529,822,3272,236761,95419,528,496,4532,15737,236761,15428,19921,611,236789,500,496,9894,21603,236909,643,111038,2887,236787,1599,659,22616,236764,614,73296,2872,1015,6178,111730,531,9434,531,2430,10396,236761,17770,496,3618,236764,994,44917,236743,236770,236964,236800,22690,111730,528,3072,531,506,15737,653,3004,236761,2301,1816,236761,108,2887,236787,1717,1901,2164,8283,107,4722,236787,107,236820,236909,111457,111038,106,107,105,4368,107,242846,244862],"total_duration":374898909,"load_duration":162370622,"prompt_eval_count":118,"prompt_eval_duration":14473585,"eval_count":3,"eval_duration":27464169} +[2025-09-20 14:01:27] [INFO] [ai:140] llm-ffe102ac LLM response model=gemma3:12b duration=0.380s summary=๐Ÿค”๐Ÿ’ป +[2025-09-20 14:01:27] [DEBUG] [ai:142] llm-ffe102ac LLM raw response: {'model': 'gemma3:12b', 'created_at': '2025-09-20T18:01:27.728281894Z', 'response': '๐Ÿค”๐Ÿ’ป', 'done': True, 'done_reason': 'stop', 'context': [105, 2364, 107, 236820, 236909, 9731, 111038, 3048, 659, 555, 1277, 236756, 3764, 5400, 699, 219769, 208651, 751, 119814, 236761, 1599, 236858, 500, 16690, 236762, 236764, 8632, 236764, 532, 1378, 14620, 236764, 840, 19297, 20111, 529, 822, 3272, 236761, 95419, 528, 496, 4532, 15737, 236761, 15428, 19921, 611, 236789, 500, 496, 9894, 21603, 236909, 643, 111038, 2887, 236787, 1599, 659, 22616, 236764, 614, 73296, 2872, 1015, 6178, 111730, 531, 9434, 531, 2430, 10396, 236761, 17770, 496, 3618, 236764, 994, 44917, 236743, 236770, 236964, 236800, 22690, 111730, 528, 3072, 531, 506, 15737, 653, 3004, 236761, 2301, 1816, 236761, 108, 2887, 236787, 1717, 1901, 2164, 8283, 107, 4722, 236787, 107, 236820, 236909, 111457, 111038, 106, 107, 105, 4368, 107, 242846, 244862], 'total_duration': 374898909, 'load_duration': 162370622, 'prompt_eval_count': 118, 'prompt_eval_duration': 14473585, 'eval_count': 3, 'eval_duration': 27464169} +[2025-09-20 14:01:27] [DEBUG] [autochat:113] ๐ŸŽญ Emoji suggestion from LLM: ๐Ÿค”๐Ÿ’ป +[2025-09-20 14:01:27] [INFO] [ai:100] ๐Ÿ“ฆ Model pull started successfully. +[2025-09-20 14:01:27] [INFO] [ai:132] llm-a630fa8d LLM request start model=gemma3:12b user=- context_len=0 +[2025-09-20 14:01:27] [DEBUG] [ai:184] llm-a630fa8d Sending payload to Ollama: model=gemma3:12b user=None +[2025-09-20 14:01:27] [DEBUG] [ai:185] llm-a630fa8d Payload size=405 chars +[2025-09-20 14:01:28] [DEBUG] [ai:193] llm-a630fa8d Raw response status=200 +[2025-09-20 14:01:28] [DEBUG] [ai:194] llm-a630fa8d Raw response body={"model":"gemma3:12b","created_at":"2025-09-20T18:01:28.104589032Z","response":"๐Ÿค” ๐Ÿคจ ๐Ÿ˜ด","done":true,"done_reason":"stop","context":[105,2364,107,236820,236909,9731,111038,3048,659,555,1277,236756,3764,5400,699,219769,208651,751,119814,236761,1599,236858,500,16690,236762,236764,8632,236764,532,1378,14620,236764,840,19297,20111,529,822,3272,236761,95419,528,496,4532,15737,236761,15428,19921,611,236789,500,496,9894,21603,236909,643,111038,2887,236787,1599,659,22616,236764,614,73296,2872,1015,6178,111730,531,9434,531,2430,10396,236761,17770,496,3618,236764,994,44917,236743,236770,236964,236800,22690,111730,528,3072,531,506,15737,653,3004,236761,2301,1816,236761,108,2887,236787,1717,1901,2164,8283,107,4722,236787,107,236820,236909,111457,111038,106,107,105,4368,107,242846,236743,248294,236743,246205],"total_duration":207411673,"load_duration":127064770,"prompt_eval_count":118,"prompt_eval_duration":13963293,"eval_count":6,"eval_duration":65915284} +[2025-09-20 14:01:28] [INFO] [ai:140] llm-a630fa8d LLM response model=gemma3:12b duration=0.210s summary=๐Ÿค” ๐Ÿคจ ๐Ÿ˜ด +[2025-09-20 14:01:28] [DEBUG] [ai:142] llm-a630fa8d LLM raw response: {'model': 'gemma3:12b', 'created_at': '2025-09-20T18:01:28.104589032Z', 'response': '๐Ÿค” ๐Ÿคจ ๐Ÿ˜ด', 'done': True, 'done_reason': 'stop', 'context': [105, 2364, 107, 236820, 236909, 9731, 111038, 3048, 659, 555, 1277, 236756, 3764, 5400, 699, 219769, 208651, 751, 119814, 236761, 1599, 236858, 500, 16690, 236762, 236764, 8632, 236764, 532, 1378, 14620, 236764, 840, 19297, 20111, 529, 822, 3272, 236761, 95419, 528, 496, 4532, 15737, 236761, 15428, 19921, 611, 236789, 500, 496, 9894, 21603, 236909, 643, 111038, 2887, 236787, 1599, 659, 22616, 236764, 614, 73296, 2872, 1015, 6178, 111730, 531, 9434, 531, 2430, 10396, 236761, 17770, 496, 3618, 236764, 994, 44917, 236743, 236770, 236964, 236800, 22690, 111730, 528, 3072, 531, 506, 15737, 653, 3004, 236761, 2301, 1816, 236761, 108, 2887, 236787, 1717, 1901, 2164, 8283, 107, 4722, 236787, 107, 236820, 236909, 111457, 111038, 106, 107, 105, 4368, 107, 242846, 236743, 248294, 236743, 246205], 'total_duration': 207411673, 'load_duration': 127064770, 'prompt_eval_count': 118, 'prompt_eval_duration': 13963293, 'eval_count': 6, 'eval_duration': 65915284} +[2025-09-20 14:01:28] [DEBUG] [autochat:113] ๐ŸŽญ Emoji suggestion from LLM: ๐Ÿค” ๐Ÿคจ ๐Ÿ˜ด +[2025-09-20 14:01:28] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 14:01:28] [INFO] [bot:91] Command modfile on cooldown. Retry after 0.7 seconds. +[2025-09-20 14:01:28] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.51) +[2025-09-20 14:01:28] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 14:01:30] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 14:01:30] [INFO] [bot:91] Command modfile info on cooldown. Retry after 10.0 seconds. +[2025-09-20 14:07:28] [INFO] [ai:40] ๐Ÿ” Modelfile loaded: ../examples/gojo.mod +[2025-09-20 14:07:28] [INFO] [bot:61] ๐Ÿ” Loaded MODEL_NAME from .env: gemma3:12b +[2025-09-20 14:07:28] [INFO] [bot:63] ๐Ÿงน Attempting to clear VRAM before loading gemma3:12b... +[2025-09-20 14:07:28] [INFO] [ai:113] ๐Ÿงน Sending safe unload request for `gemma3:12b` +[2025-09-20 14:07:28] [INFO] [ai:120] ๐Ÿงฝ Ollama unload response: 200 - {"model":"gemma3:12b","created_at":"2025-09-20T18:07:28.400071637Z","response":"","done":true,"done_reason":"unload"} +[2025-09-20 14:07:28] [INFO] [ai:93] ๐Ÿง  Preloading model: gemma3:12b +[2025-09-20 14:07:28] [INFO] [ai:100] ๐Ÿ“ฆ Model pull started successfully. +[2025-09-20 14:07:28] [INFO] [bot:67] ๐Ÿš€ Model `gemma3:12b` preloaded on startup. +[2025-09-20 14:07:28] [INFO] [bot:70] โœ… Final model in use: gemma3:12b +[2025-09-20 14:07:31] [INFO] [bot:262] Logged in as AI Bot +[2025-09-20 14:07:31] [INFO] [scheduler:29] ๐Ÿ›‘ Scheduler disabled in config. +[2025-09-20 14:08:08] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.41) +[2025-09-20 14:08:08] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.95) +[2025-09-20 14:08:08] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 14:08:08] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.86) +[2025-09-20 14:08:08] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.71) +[2025-09-20 14:08:08] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 14:08:08] [INFO] [bot:91] Command modfile info on cooldown. Retry after 10.0 seconds. +[2025-09-20 14:08:12] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.11) +[2025-09-20 14:08:12] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.14) +[2025-09-20 14:08:12] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 14:08:12] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.26) +[2025-09-20 14:08:12] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.45) +[2025-09-20 14:08:12] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 14:08:12] [INFO] [bot:91] Command modfile on cooldown. Retry after 6.0 seconds. +[2025-09-20 14:08:16] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.76) +[2025-09-20 14:08:16] [INFO] [ai:93] ๐Ÿง  Preloading model: gemma3:12b +[2025-09-20 14:08:16] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.85) +[2025-09-20 14:08:16] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 14:08:16] [INFO] [ai:100] ๐Ÿ“ฆ Model pull started successfully. +[2025-09-20 14:08:16] [INFO] [ai:132] llm-cdb3a1e0 LLM request start model=gemma3:12b user=- context_len=0 +[2025-09-20 14:08:16] [DEBUG] [ai:184] llm-cdb3a1e0 Sending payload to Ollama: model=gemma3:12b user=None +[2025-09-20 14:08:16] [DEBUG] [ai:185] llm-cdb3a1e0 Payload size=405 chars +[2025-09-20 14:08:20] [DEBUG] [ai:193] llm-cdb3a1e0 Raw response status=200 +[2025-09-20 14:08:20] [DEBUG] [ai:194] llm-cdb3a1e0 Raw response body={"model":"gemma3:12b","created_at":"2025-09-20T18:08:19.997765034Z","response":"๐Ÿค”๐Ÿคจ","done":true,"done_reason":"stop","context":[105,2364,107,236820,236909,9731,111038,3048,659,555,1277,236756,3764,5400,699,219769,208651,751,119814,236761,1599,236858,500,16690,236762,236764,8632,236764,532,1378,14620,236764,840,19297,20111,529,822,3272,236761,95419,528,496,4532,15737,236761,15428,19921,611,236789,500,496,9894,21603,236909,643,111038,2887,236787,1599,659,22616,236764,614,73296,2872,1015,6178,111730,531,9434,531,2430,10396,236761,17770,496,3618,236764,994,44917,236743,236770,236964,236800,22690,111730,528,3072,531,506,15737,653,3004,236761,2301,1816,236761,108,2887,236787,1717,1901,2164,8283,107,4722,236787,107,236820,236909,111457,111038,106,107,105,4368,107,242846,248294],"total_duration":3506857663,"load_duration":3248947067,"prompt_eval_count":118,"prompt_eval_duration":209487061,"eval_count":3,"eval_duration":48056613} +[2025-09-20 14:08:20] [INFO] [ai:140] llm-cdb3a1e0 LLM response model=gemma3:12b duration=3.528s summary=๐Ÿค”๐Ÿคจ +[2025-09-20 14:08:20] [DEBUG] [ai:142] llm-cdb3a1e0 LLM raw response: {'model': 'gemma3:12b', 'created_at': '2025-09-20T18:08:19.997765034Z', 'response': '๐Ÿค”๐Ÿคจ', 'done': True, 'done_reason': 'stop', 'context': [105, 2364, 107, 236820, 236909, 9731, 111038, 3048, 659, 555, 1277, 236756, 3764, 5400, 699, 219769, 208651, 751, 119814, 236761, 1599, 236858, 500, 16690, 236762, 236764, 8632, 236764, 532, 1378, 14620, 236764, 840, 19297, 20111, 529, 822, 3272, 236761, 95419, 528, 496, 4532, 15737, 236761, 15428, 19921, 611, 236789, 500, 496, 9894, 21603, 236909, 643, 111038, 2887, 236787, 1599, 659, 22616, 236764, 614, 73296, 2872, 1015, 6178, 111730, 531, 9434, 531, 2430, 10396, 236761, 17770, 496, 3618, 236764, 994, 44917, 236743, 236770, 236964, 236800, 22690, 111730, 528, 3072, 531, 506, 15737, 653, 3004, 236761, 2301, 1816, 236761, 108, 2887, 236787, 1717, 1901, 2164, 8283, 107, 4722, 236787, 107, 236820, 236909, 111457, 111038, 106, 107, 105, 4368, 107, 242846, 248294], 'total_duration': 3506857663, 'load_duration': 3248947067, 'prompt_eval_count': 118, 'prompt_eval_duration': 209487061, 'eval_count': 3, 'eval_duration': 48056613} +[2025-09-20 14:08:20] [DEBUG] [autochat:113] ๐ŸŽญ Emoji suggestion from LLM: ๐Ÿค”๐Ÿคจ +[2025-09-20 14:08:20] [INFO] [ai:93] ๐Ÿง  Preloading model: gemma3:12b +[2025-09-20 14:08:21] [INFO] [ai:100] ๐Ÿ“ฆ Model pull started successfully. +[2025-09-20 14:08:21] [INFO] [ai:132] llm-1f4b5e36 LLM request start model=gemma3:12b user=- context_len=0 +[2025-09-20 14:08:21] [DEBUG] [ai:184] llm-1f4b5e36 Sending payload to Ollama: model=gemma3:12b user=None +[2025-09-20 14:08:21] [DEBUG] [ai:185] llm-1f4b5e36 Payload size=405 chars +[2025-09-20 14:08:21] [DEBUG] [ai:193] llm-1f4b5e36 Raw response status=200 +[2025-09-20 14:08:21] [DEBUG] [ai:194] llm-1f4b5e36 Raw response body={"model":"gemma3:12b","created_at":"2025-09-20T18:08:21.322827156Z","response":"๐Ÿค”๐Ÿคจ","done":true,"done_reason":"stop","context":[105,2364,107,236820,236909,9731,111038,3048,659,555,1277,236756,3764,5400,699,219769,208651,751,119814,236761,1599,236858,500,16690,236762,236764,8632,236764,532,1378,14620,236764,840,19297,20111,529,822,3272,236761,95419,528,496,4532,15737,236761,15428,19921,611,236789,500,496,9894,21603,236909,643,111038,2887,236787,1599,659,22616,236764,614,73296,2872,1015,6178,111730,531,9434,531,2430,10396,236761,17770,496,3618,236764,994,44917,236743,236770,236964,236800,22690,111730,528,3072,531,506,15737,653,3004,236761,2301,1816,236761,108,2887,236787,1717,1901,2164,8283,107,4722,236787,107,236820,236909,111457,111038,106,107,105,4368,107,242846,248294],"total_duration":175838784,"load_duration":134017926,"prompt_eval_count":118,"prompt_eval_duration":14102362,"eval_count":3,"eval_duration":27196875} +[2025-09-20 14:08:21] [INFO] [ai:140] llm-1f4b5e36 LLM response model=gemma3:12b duration=0.178s summary=๐Ÿค”๐Ÿคจ +[2025-09-20 14:08:21] [DEBUG] [ai:142] llm-1f4b5e36 LLM raw response: {'model': 'gemma3:12b', 'created_at': '2025-09-20T18:08:21.322827156Z', 'response': '๐Ÿค”๐Ÿคจ', 'done': True, 'done_reason': 'stop', 'context': [105, 2364, 107, 236820, 236909, 9731, 111038, 3048, 659, 555, 1277, 236756, 3764, 5400, 699, 219769, 208651, 751, 119814, 236761, 1599, 236858, 500, 16690, 236762, 236764, 8632, 236764, 532, 1378, 14620, 236764, 840, 19297, 20111, 529, 822, 3272, 236761, 95419, 528, 496, 4532, 15737, 236761, 15428, 19921, 611, 236789, 500, 496, 9894, 21603, 236909, 643, 111038, 2887, 236787, 1599, 659, 22616, 236764, 614, 73296, 2872, 1015, 6178, 111730, 531, 9434, 531, 2430, 10396, 236761, 17770, 496, 3618, 236764, 994, 44917, 236743, 236770, 236964, 236800, 22690, 111730, 528, 3072, 531, 506, 15737, 653, 3004, 236761, 2301, 1816, 236761, 108, 2887, 236787, 1717, 1901, 2164, 8283, 107, 4722, 236787, 107, 236820, 236909, 111457, 111038, 106, 107, 105, 4368, 107, 242846, 248294], 'total_duration': 175838784, 'load_duration': 134017926, 'prompt_eval_count': 118, 'prompt_eval_duration': 14102362, 'eval_count': 3, 'eval_duration': 27196875} +[2025-09-20 14:08:21] [DEBUG] [autochat:113] ๐ŸŽญ Emoji suggestion from LLM: ๐Ÿค”๐Ÿคจ +[2025-09-20 14:08:22] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 14:08:22] [INFO] [bot:91] Command modfile info on cooldown. Retry after 10.0 seconds. +[2025-09-20 14:10:53] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.31) +[2025-09-20 14:10:53] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.49) +[2025-09-20 14:10:53] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 14:10:53] [INFO] [bot:91] Command modfile info on cooldown. Retry after 10.0 seconds. +[2025-09-20 14:10:58] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.79) +[2025-09-20 14:10:58] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.56) +[2025-09-20 14:10:58] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 14:10:58] [INFO] [bot:91] Command modfile on cooldown. Retry after 5.0 seconds. +[2025-09-20 14:11:01] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.39) +[2025-09-20 14:11:01] [INFO] [ai:93] ๐Ÿง  Preloading model: gemma3:12b +[2025-09-20 14:11:01] [INFO] [ai:100] ๐Ÿ“ฆ Model pull started successfully. +[2025-09-20 14:11:01] [INFO] [ai:132] llm-02a70d4d LLM request start model=gemma3:12b user=- context_len=0 +[2025-09-20 14:11:01] [DEBUG] [ai:184] llm-02a70d4d Sending payload to Ollama: model=gemma3:12b user=None +[2025-09-20 14:11:01] [DEBUG] [ai:185] llm-02a70d4d Payload size=405 chars +[2025-09-20 14:11:01] [DEBUG] [ai:193] llm-02a70d4d Raw response status=200 +[2025-09-20 14:11:01] [DEBUG] [ai:194] llm-02a70d4d Raw response body={"model":"gemma3:12b","created_at":"2025-09-20T18:11:01.892603292Z","response":"๐Ÿค” ๐Ÿคจ ๐Ÿ˜ด","done":true,"done_reason":"stop","context":[105,2364,107,236820,236909,9731,111038,3048,659,555,1277,236756,3764,5400,699,219769,208651,751,119814,236761,1599,236858,500,16690,236762,236764,8632,236764,532,1378,14620,236764,840,19297,20111,529,822,3272,236761,95419,528,496,4532,15737,236761,15428,19921,611,236789,500,496,9894,21603,236909,643,111038,2887,236787,1599,659,22616,236764,614,73296,2872,1015,6178,111730,531,9434,531,2430,10396,236761,17770,496,3618,236764,994,44917,236743,236770,236964,236800,22690,111730,528,3072,531,506,15737,653,3004,236761,2301,1816,236761,108,2887,236787,1717,1901,2164,8283,107,4722,236787,107,236820,236909,111457,111038,106,107,105,4368,107,242846,236743,248294,236743,246205],"total_duration":242035661,"load_duration":123466389,"prompt_eval_count":118,"prompt_eval_duration":40510527,"eval_count":6,"eval_duration":77606418} +[2025-09-20 14:11:01] [INFO] [ai:140] llm-02a70d4d LLM response model=gemma3:12b duration=0.245s summary=๐Ÿค” ๐Ÿคจ ๐Ÿ˜ด +[2025-09-20 14:11:01] [DEBUG] [ai:142] llm-02a70d4d LLM raw response: {'model': 'gemma3:12b', 'created_at': '2025-09-20T18:11:01.892603292Z', 'response': '๐Ÿค” ๐Ÿคจ ๐Ÿ˜ด', 'done': True, 'done_reason': 'stop', 'context': [105, 2364, 107, 236820, 236909, 9731, 111038, 3048, 659, 555, 1277, 236756, 3764, 5400, 699, 219769, 208651, 751, 119814, 236761, 1599, 236858, 500, 16690, 236762, 236764, 8632, 236764, 532, 1378, 14620, 236764, 840, 19297, 20111, 529, 822, 3272, 236761, 95419, 528, 496, 4532, 15737, 236761, 15428, 19921, 611, 236789, 500, 496, 9894, 21603, 236909, 643, 111038, 2887, 236787, 1599, 659, 22616, 236764, 614, 73296, 2872, 1015, 6178, 111730, 531, 9434, 531, 2430, 10396, 236761, 17770, 496, 3618, 236764, 994, 44917, 236743, 236770, 236964, 236800, 22690, 111730, 528, 3072, 531, 506, 15737, 653, 3004, 236761, 2301, 1816, 236761, 108, 2887, 236787, 1717, 1901, 2164, 8283, 107, 4722, 236787, 107, 236820, 236909, 111457, 111038, 106, 107, 105, 4368, 107, 242846, 236743, 248294, 236743, 246205], 'total_duration': 242035661, 'load_duration': 123466389, 'prompt_eval_count': 118, 'prompt_eval_duration': 40510527, 'eval_count': 6, 'eval_duration': 77606418} +[2025-09-20 14:11:01] [DEBUG] [autochat:113] ๐ŸŽญ Emoji suggestion from LLM: ๐Ÿค” ๐Ÿคจ ๐Ÿ˜ด +[2025-09-20 14:11:03] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 14:11:03] [INFO] [bot:91] Command modfile on cooldown. Retry after 0.2 seconds. +[2025-09-20 14:11:05] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.12) +[2025-09-20 14:11:05] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.38) +[2025-09-20 14:11:05] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 14:11:05] [INFO] [bot:91] Command modfile info on cooldown. Retry after 10.0 seconds. +[2025-09-20 14:17:22] [INFO] [ai:40] ๐Ÿ” Modelfile loaded: ../examples/gojo.mod +[2025-09-20 14:17:22] [INFO] [bot:62] ๐Ÿ” Loaded MODEL_NAME from .env: gemma3:12b +[2025-09-20 14:17:22] [INFO] [bot:64] ๐Ÿงน Attempting to clear VRAM before loading gemma3:12b... +[2025-09-20 14:17:22] [INFO] [ai:113] ๐Ÿงน Sending safe unload request for `gemma3:12b` +[2025-09-20 14:17:22] [INFO] [ai:120] ๐Ÿงฝ Ollama unload response: 200 - {"model":"gemma3:12b","created_at":"2025-09-20T18:17:22.837592792Z","response":"","done":true,"done_reason":"unload"} +[2025-09-20 14:17:22] [INFO] [ai:93] ๐Ÿง  Preloading model: gemma3:12b +[2025-09-20 14:17:23] [INFO] [ai:100] ๐Ÿ“ฆ Model pull started successfully. +[2025-09-20 14:17:23] [INFO] [bot:68] ๐Ÿš€ Model `gemma3:12b` preloaded on startup. +[2025-09-20 14:17:23] [INFO] [bot:71] โœ… Final model in use: gemma3:12b +[2025-09-20 14:17:25] [INFO] [bot:281] Logged in as AI Bot +[2025-09-20 14:17:25] [INFO] [scheduler:29] ๐Ÿ›‘ Scheduler disabled in config. +[2025-09-20 14:17:29] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.82) +[2025-09-20 14:17:29] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.62) +[2025-09-20 14:17:29] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 14:17:29] [INFO] [ai:93] ๐Ÿง  Preloading model: gemma3:12b +[2025-09-20 14:17:30] [INFO] [ai:100] ๐Ÿ“ฆ Model pull started successfully. +[2025-09-20 14:17:30] [INFO] [ai:132] llm-5124ca3a LLM request start model=gemma3:12b user=- context_len=0 +[2025-09-20 14:17:30] [DEBUG] [ai:184] llm-5124ca3a Sending payload to Ollama: model=gemma3:12b user=None +[2025-09-20 14:17:30] [DEBUG] [ai:185] llm-5124ca3a Payload size=405 chars +[2025-09-20 14:17:32] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.55) +[2025-09-20 14:17:32] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.69) +[2025-09-20 14:17:32] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 14:17:33] [DEBUG] [ai:193] llm-5124ca3a Raw response status=200 +[2025-09-20 14:17:33] [DEBUG] [ai:194] llm-5124ca3a Raw response body={"model":"gemma3:12b","created_at":"2025-09-20T18:17:33.5277511Z","response":"๐Ÿ‘€โœจ","done":true,"done_reason":"stop","context":[105,2364,107,236820,236909,9731,111038,3048,659,555,1277,236756,3764,5400,699,219769,208651,751,119814,236761,1599,236858,500,16690,236762,236764,8632,236764,532,1378,14620,236764,840,19297,20111,529,822,3272,236761,95419,528,496,4532,15737,236761,15428,19921,611,236789,500,496,9894,21603,236909,643,111038,2887,236787,1599,659,22616,236764,614,73296,2872,1015,6178,111730,531,9434,531,2430,10396,236761,17770,496,3618,236764,994,44917,236743,236770,236964,236800,22690,111730,528,3072,531,506,15737,653,3004,236761,2301,1816,236761,108,2887,236787,1717,1901,2164,8283,107,4722,236787,107,236820,236909,111457,111038,106,107,105,4368,107,242509,239794],"total_duration":3487062480,"load_duration":3237295173,"prompt_eval_count":118,"prompt_eval_duration":201027253,"eval_count":3,"eval_duration":48123981} +[2025-09-20 14:17:33] [INFO] [ai:140] llm-5124ca3a LLM response model=gemma3:12b duration=3.503s summary=๐Ÿ‘€โœจ +[2025-09-20 14:17:33] [DEBUG] [ai:142] llm-5124ca3a LLM raw response: {'model': 'gemma3:12b', 'created_at': '2025-09-20T18:17:33.5277511Z', 'response': '๐Ÿ‘€โœจ', 'done': True, 'done_reason': 'stop', 'context': [105, 2364, 107, 236820, 236909, 9731, 111038, 3048, 659, 555, 1277, 236756, 3764, 5400, 699, 219769, 208651, 751, 119814, 236761, 1599, 236858, 500, 16690, 236762, 236764, 8632, 236764, 532, 1378, 14620, 236764, 840, 19297, 20111, 529, 822, 3272, 236761, 95419, 528, 496, 4532, 15737, 236761, 15428, 19921, 611, 236789, 500, 496, 9894, 21603, 236909, 643, 111038, 2887, 236787, 1599, 659, 22616, 236764, 614, 73296, 2872, 1015, 6178, 111730, 531, 9434, 531, 2430, 10396, 236761, 17770, 496, 3618, 236764, 994, 44917, 236743, 236770, 236964, 236800, 22690, 111730, 528, 3072, 531, 506, 15737, 653, 3004, 236761, 2301, 1816, 236761, 108, 2887, 236787, 1717, 1901, 2164, 8283, 107, 4722, 236787, 107, 236820, 236909, 111457, 111038, 106, 107, 105, 4368, 107, 242509, 239794], 'total_duration': 3487062480, 'load_duration': 3237295173, 'prompt_eval_count': 118, 'prompt_eval_duration': 201027253, 'eval_count': 3, 'eval_duration': 48123981} +[2025-09-20 14:17:33] [DEBUG] [autochat:113] ๐ŸŽญ Emoji suggestion from LLM: ๐Ÿ‘€โœจ +[2025-09-20 14:17:33] [INFO] [ai:93] ๐Ÿง  Preloading model: gemma3:12b +[2025-09-20 14:17:33] [INFO] [ai:100] ๐Ÿ“ฆ Model pull started successfully. +[2025-09-20 14:17:33] [INFO] [ai:132] llm-838542d2 LLM request start model=gemma3:12b user=- context_len=0 +[2025-09-20 14:17:33] [DEBUG] [ai:184] llm-838542d2 Sending payload to Ollama: model=gemma3:12b user=None +[2025-09-20 14:17:33] [DEBUG] [ai:185] llm-838542d2 Payload size=405 chars +[2025-09-20 14:17:33] [DEBUG] [ai:193] llm-838542d2 Raw response status=200 +[2025-09-20 14:17:33] [DEBUG] [ai:194] llm-838542d2 Raw response body={"model":"gemma3:12b","created_at":"2025-09-20T18:17:33.913050192Z","response":"๐Ÿค”๐Ÿคจ","done":true,"done_reason":"stop","context":[105,2364,107,236820,236909,9731,111038,3048,659,555,1277,236756,3764,5400,699,219769,208651,751,119814,236761,1599,236858,500,16690,236762,236764,8632,236764,532,1378,14620,236764,840,19297,20111,529,822,3272,236761,95419,528,496,4532,15737,236761,15428,19921,611,236789,500,496,9894,21603,236909,643,111038,2887,236787,1599,659,22616,236764,614,73296,2872,1015,6178,111730,531,9434,531,2430,10396,236761,17770,496,3618,236764,994,44917,236743,236770,236964,236800,22690,111730,528,3072,531,506,15737,653,3004,236761,2301,1816,236761,108,2887,236787,1717,1901,2164,8283,107,4722,236787,107,236820,236909,111457,111038,106,107,105,4368,107,242846,248294],"total_duration":182474215,"load_duration":141028193,"prompt_eval_count":118,"prompt_eval_duration":13632404,"eval_count":3,"eval_duration":27383513} +[2025-09-20 14:17:33] [INFO] [ai:140] llm-838542d2 LLM response model=gemma3:12b duration=0.185s summary=๐Ÿค”๐Ÿคจ +[2025-09-20 14:17:33] [DEBUG] [ai:142] llm-838542d2 LLM raw response: {'model': 'gemma3:12b', 'created_at': '2025-09-20T18:17:33.913050192Z', 'response': '๐Ÿค”๐Ÿคจ', 'done': True, 'done_reason': 'stop', 'context': [105, 2364, 107, 236820, 236909, 9731, 111038, 3048, 659, 555, 1277, 236756, 3764, 5400, 699, 219769, 208651, 751, 119814, 236761, 1599, 236858, 500, 16690, 236762, 236764, 8632, 236764, 532, 1378, 14620, 236764, 840, 19297, 20111, 529, 822, 3272, 236761, 95419, 528, 496, 4532, 15737, 236761, 15428, 19921, 611, 236789, 500, 496, 9894, 21603, 236909, 643, 111038, 2887, 236787, 1599, 659, 22616, 236764, 614, 73296, 2872, 1015, 6178, 111730, 531, 9434, 531, 2430, 10396, 236761, 17770, 496, 3618, 236764, 994, 44917, 236743, 236770, 236964, 236800, 22690, 111730, 528, 3072, 531, 506, 15737, 653, 3004, 236761, 2301, 1816, 236761, 108, 2887, 236787, 1717, 1901, 2164, 8283, 107, 4722, 236787, 107, 236820, 236909, 111457, 111038, 106, 107, 105, 4368, 107, 242846, 248294], 'total_duration': 182474215, 'load_duration': 141028193, 'prompt_eval_count': 118, 'prompt_eval_duration': 13632404, 'eval_count': 3, 'eval_duration': 27383513} +[2025-09-20 14:17:33] [DEBUG] [autochat:113] ๐ŸŽญ Emoji suggestion from LLM: ๐Ÿค”๐Ÿคจ +[2025-09-20 14:17:34] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.93) +[2025-09-20 14:17:34] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 14:17:34] [INFO] [bot:91] Command modfile info on cooldown. Retry after 10.0 seconds. +[2025-09-20 14:17:35] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.24) +[2025-09-20 14:17:35] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 14:17:35] [INFO] [bot:91] Command modfile on cooldown. Retry after 9.2 seconds. +[2025-09-20 14:17:37] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.20) +[2025-09-20 14:17:37] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 1.00) +[2025-09-20 14:17:37] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 14:17:37] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.37) +[2025-09-20 14:17:37] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.17) +[2025-09-20 14:17:37] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 14:17:37] [INFO] [bot:91] Command modfile on cooldown. Retry after 6.5 seconds. +[2025-09-20 14:17:41] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.14) +[2025-09-20 14:17:41] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.23) +[2025-09-20 14:17:41] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 14:17:41] [INFO] [bot:91] Command modfile on cooldown. Retry after 3.4 seconds. +[2025-09-20 14:17:41] [INFO] [ai:93] ๐Ÿง  Preloading model: gemma3:12b +[2025-09-20 14:17:41] [INFO] [ai:100] ๐Ÿ“ฆ Model pull started successfully. +[2025-09-20 14:17:41] [INFO] [ai:132] llm-bfc9c877 LLM request start model=gemma3:12b user=- context_len=0 +[2025-09-20 14:17:41] [DEBUG] [ai:184] llm-bfc9c877 Sending payload to Ollama: model=gemma3:12b user=None +[2025-09-20 14:17:41] [DEBUG] [ai:185] llm-bfc9c877 Payload size=405 chars +[2025-09-20 14:17:41] [DEBUG] [ai:193] llm-bfc9c877 Raw response status=200 +[2025-09-20 14:17:41] [DEBUG] [ai:194] llm-bfc9c877 Raw response body={"model":"gemma3:12b","created_at":"2025-09-20T18:17:41.480434859Z","response":"๐Ÿค” ๐Ÿ˜ถ ๐Ÿ˜ฌ","done":true,"done_reason":"stop","context":[105,2364,107,236820,236909,9731,111038,3048,659,555,1277,236756,3764,5400,699,219769,208651,751,119814,236761,1599,236858,500,16690,236762,236764,8632,236764,532,1378,14620,236764,840,19297,20111,529,822,3272,236761,95419,528,496,4532,15737,236761,15428,19921,611,236789,500,496,9894,21603,236909,643,111038,2887,236787,1599,659,22616,236764,614,73296,2872,1015,6178,111730,531,9434,531,2430,10396,236761,17770,496,3618,236764,994,44917,236743,236770,236964,236800,22690,111730,528,3072,531,506,15737,653,3004,236761,2301,1816,236761,108,2887,236787,1717,1901,2164,8283,107,4722,236787,107,236820,236909,111457,111038,106,107,105,4368,107,242846,236743,247717,236743,244993],"total_duration":202103537,"load_duration":120133396,"prompt_eval_count":118,"prompt_eval_duration":14065140,"eval_count":6,"eval_duration":67544194} +[2025-09-20 14:17:41] [INFO] [ai:140] llm-bfc9c877 LLM response model=gemma3:12b duration=0.205s summary=๐Ÿค” ๐Ÿ˜ถ ๐Ÿ˜ฌ +[2025-09-20 14:17:41] [DEBUG] [ai:142] llm-bfc9c877 LLM raw response: {'model': 'gemma3:12b', 'created_at': '2025-09-20T18:17:41.480434859Z', 'response': '๐Ÿค” ๐Ÿ˜ถ ๐Ÿ˜ฌ', 'done': True, 'done_reason': 'stop', 'context': [105, 2364, 107, 236820, 236909, 9731, 111038, 3048, 659, 555, 1277, 236756, 3764, 5400, 699, 219769, 208651, 751, 119814, 236761, 1599, 236858, 500, 16690, 236762, 236764, 8632, 236764, 532, 1378, 14620, 236764, 840, 19297, 20111, 529, 822, 3272, 236761, 95419, 528, 496, 4532, 15737, 236761, 15428, 19921, 611, 236789, 500, 496, 9894, 21603, 236909, 643, 111038, 2887, 236787, 1599, 659, 22616, 236764, 614, 73296, 2872, 1015, 6178, 111730, 531, 9434, 531, 2430, 10396, 236761, 17770, 496, 3618, 236764, 994, 44917, 236743, 236770, 236964, 236800, 22690, 111730, 528, 3072, 531, 506, 15737, 653, 3004, 236761, 2301, 1816, 236761, 108, 2887, 236787, 1717, 1901, 2164, 8283, 107, 4722, 236787, 107, 236820, 236909, 111457, 111038, 106, 107, 105, 4368, 107, 242846, 236743, 247717, 236743, 244993], 'total_duration': 202103537, 'load_duration': 120133396, 'prompt_eval_count': 118, 'prompt_eval_duration': 14065140, 'eval_count': 6, 'eval_duration': 67544194} +[2025-09-20 14:17:41] [DEBUG] [autochat:113] ๐ŸŽญ Emoji suggestion from LLM: ๐Ÿค” ๐Ÿ˜ถ ๐Ÿ˜ฌ +[2025-09-20 14:17:42] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.39) +[2025-09-20 14:17:42] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 14:19:01] [INFO] [ai:40] ๐Ÿ” Modelfile loaded: ../examples/gojo.mod +[2025-09-20 14:19:01] [INFO] [bot:62] ๐Ÿ” Loaded MODEL_NAME from .env: gemma3:12b +[2025-09-20 14:19:01] [INFO] [bot:64] ๐Ÿงน Attempting to clear VRAM before loading gemma3:12b... +[2025-09-20 14:19:01] [INFO] [ai:113] ๐Ÿงน Sending safe unload request for `gemma3:12b` +[2025-09-20 14:19:01] [INFO] [ai:120] ๐Ÿงฝ Ollama unload response: 200 - {"model":"gemma3:12b","created_at":"2025-09-20T18:19:01.179228796Z","response":"","done":true,"done_reason":"unload"} +[2025-09-20 14:19:01] [INFO] [ai:93] ๐Ÿง  Preloading model: gemma3:12b +[2025-09-20 14:19:01] [INFO] [ai:100] ๐Ÿ“ฆ Model pull started successfully. +[2025-09-20 14:19:01] [INFO] [bot:68] ๐Ÿš€ Model `gemma3:12b` preloaded on startup. +[2025-09-20 14:19:01] [INFO] [bot:71] โœ… Final model in use: gemma3:12b +[2025-09-20 14:19:04] [INFO] [bot:281] Logged in as AI Bot +[2025-09-20 14:19:04] [INFO] [scheduler:29] ๐Ÿ›‘ Scheduler disabled in config. +[2025-09-20 14:19:05] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.26) +[2025-09-20 14:19:05] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.93) +[2025-09-20 14:19:05] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 14:19:08] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.30) +[2025-09-20 14:19:08] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.85) +[2025-09-20 14:19:08] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 14:19:11] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.58) +[2025-09-20 14:19:11] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.28) +[2025-09-20 14:19:11] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 14:19:13] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.63) +[2025-09-20 14:19:13] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.20) +[2025-09-20 14:19:13] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 14:19:15] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.59) +[2025-09-20 14:19:15] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.21) +[2025-09-20 14:19:15] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 14:19:17] [INFO] [ai:93] ๐Ÿง  Preloading model: gemma3:12b +[2025-09-20 14:19:17] [INFO] [ai:100] ๐Ÿ“ฆ Model pull started successfully. +[2025-09-20 14:19:17] [INFO] [ai:132] llm-38dd7ca4 LLM request start model=gemma3:12b user=- context_len=0 +[2025-09-20 14:19:17] [DEBUG] [ai:184] llm-38dd7ca4 Sending payload to Ollama: model=gemma3:12b user=None +[2025-09-20 14:19:17] [DEBUG] [ai:185] llm-38dd7ca4 Payload size=405 chars +[2025-09-20 14:19:21] [DEBUG] [ai:193] llm-38dd7ca4 Raw response status=200 +[2025-09-20 14:19:21] [DEBUG] [ai:194] llm-38dd7ca4 Raw response body={"model":"gemma3:12b","created_at":"2025-09-20T18:19:20.985300681Z","response":"๐Ÿค”๐Ÿคจ","done":true,"done_reason":"stop","context":[105,2364,107,236820,236909,9731,111038,3048,659,555,1277,236756,3764,5400,699,219769,208651,751,119814,236761,1599,236858,500,16690,236762,236764,8632,236764,532,1378,14620,236764,840,19297,20111,529,822,3272,236761,95419,528,496,4532,15737,236761,15428,19921,611,236789,500,496,9894,21603,236909,643,111038,2887,236787,1599,659,22616,236764,614,73296,2872,1015,6178,111730,531,9434,531,2430,10396,236761,17770,496,3618,236764,994,44917,236743,236770,236964,236800,22690,111730,528,3072,531,506,15737,653,3004,236761,2301,1816,236761,108,2887,236787,1717,1901,2164,8283,107,4722,236787,107,236820,236909,111457,111038,106,107,105,4368,107,242846,248294],"total_duration":3502278697,"load_duration":3257536949,"prompt_eval_count":118,"prompt_eval_duration":196630825,"eval_count":3,"eval_duration":47603398} +[2025-09-20 14:19:21] [INFO] [ai:140] llm-38dd7ca4 LLM response model=gemma3:12b duration=3.519s summary=๐Ÿค”๐Ÿคจ +[2025-09-20 14:19:21] [DEBUG] [ai:142] llm-38dd7ca4 LLM raw response: {'model': 'gemma3:12b', 'created_at': '2025-09-20T18:19:20.985300681Z', 'response': '๐Ÿค”๐Ÿคจ', 'done': True, 'done_reason': 'stop', 'context': [105, 2364, 107, 236820, 236909, 9731, 111038, 3048, 659, 555, 1277, 236756, 3764, 5400, 699, 219769, 208651, 751, 119814, 236761, 1599, 236858, 500, 16690, 236762, 236764, 8632, 236764, 532, 1378, 14620, 236764, 840, 19297, 20111, 529, 822, 3272, 236761, 95419, 528, 496, 4532, 15737, 236761, 15428, 19921, 611, 236789, 500, 496, 9894, 21603, 236909, 643, 111038, 2887, 236787, 1599, 659, 22616, 236764, 614, 73296, 2872, 1015, 6178, 111730, 531, 9434, 531, 2430, 10396, 236761, 17770, 496, 3618, 236764, 994, 44917, 236743, 236770, 236964, 236800, 22690, 111730, 528, 3072, 531, 506, 15737, 653, 3004, 236761, 2301, 1816, 236761, 108, 2887, 236787, 1717, 1901, 2164, 8283, 107, 4722, 236787, 107, 236820, 236909, 111457, 111038, 106, 107, 105, 4368, 107, 242846, 248294], 'total_duration': 3502278697, 'load_duration': 3257536949, 'prompt_eval_count': 118, 'prompt_eval_duration': 196630825, 'eval_count': 3, 'eval_duration': 47603398} +[2025-09-20 14:19:21] [DEBUG] [autochat:113] ๐ŸŽญ Emoji suggestion from LLM: ๐Ÿค”๐Ÿคจ +[2025-09-20 14:19:21] [INFO] [ai:93] ๐Ÿง  Preloading model: gemma3:12b +[2025-09-20 14:19:21] [INFO] [ai:100] ๐Ÿ“ฆ Model pull started successfully. +[2025-09-20 14:19:21] [INFO] [ai:132] llm-67ef8cc5 LLM request start model=gemma3:12b user=- context_len=0 +[2025-09-20 14:19:21] [DEBUG] [ai:184] llm-67ef8cc5 Sending payload to Ollama: model=gemma3:12b user=None +[2025-09-20 14:19:21] [DEBUG] [ai:185] llm-67ef8cc5 Payload size=405 chars +[2025-09-20 14:19:21] [DEBUG] [ai:193] llm-67ef8cc5 Raw response status=200 +[2025-09-20 14:19:21] [DEBUG] [ai:194] llm-67ef8cc5 Raw response body={"model":"gemma3:12b","created_at":"2025-09-20T18:19:21.383923448Z","response":"๐Ÿ™„๐Ÿ˜‚๐Ÿคฆโ€โ™‚๏ธ","done":true,"done_reason":"stop","context":[105,2364,107,236820,236909,9731,111038,3048,659,555,1277,236756,3764,5400,699,219769,208651,751,119814,236761,1599,236858,500,16690,236762,236764,8632,236764,532,1378,14620,236764,840,19297,20111,529,822,3272,236761,95419,528,496,4532,15737,236761,15428,19921,611,236789,500,496,9894,21603,236909,643,111038,2887,236787,1599,659,22616,236764,614,73296,2872,1015,6178,111730,531,9434,531,2430,10396,236761,17770,496,3618,236764,994,44917,236743,236770,236964,236800,22690,111730,528,3072,531,506,15737,653,3004,236761,2301,1816,236761,108,2887,236787,1717,1901,2164,8283,107,4722,236787,107,236820,236909,111457,111038,106,107,105,4368,107,243810,239927,243789,121457],"total_duration":216503008,"load_duration":147117257,"prompt_eval_count":118,"prompt_eval_duration":14063269,"eval_count":5,"eval_duration":54900258} +[2025-09-20 14:19:21] [INFO] [ai:140] llm-67ef8cc5 LLM response model=gemma3:12b duration=0.219s summary=๐Ÿ™„๐Ÿ˜‚๐Ÿคฆโ€โ™‚๏ธ +[2025-09-20 14:19:21] [DEBUG] [ai:142] llm-67ef8cc5 LLM raw response: {'model': 'gemma3:12b', 'created_at': '2025-09-20T18:19:21.383923448Z', 'response': '๐Ÿ™„๐Ÿ˜‚๐Ÿคฆ\u200dโ™‚๏ธ', 'done': True, 'done_reason': 'stop', 'context': [105, 2364, 107, 236820, 236909, 9731, 111038, 3048, 659, 555, 1277, 236756, 3764, 5400, 699, 219769, 208651, 751, 119814, 236761, 1599, 236858, 500, 16690, 236762, 236764, 8632, 236764, 532, 1378, 14620, 236764, 840, 19297, 20111, 529, 822, 3272, 236761, 95419, 528, 496, 4532, 15737, 236761, 15428, 19921, 611, 236789, 500, 496, 9894, 21603, 236909, 643, 111038, 2887, 236787, 1599, 659, 22616, 236764, 614, 73296, 2872, 1015, 6178, 111730, 531, 9434, 531, 2430, 10396, 236761, 17770, 496, 3618, 236764, 994, 44917, 236743, 236770, 236964, 236800, 22690, 111730, 528, 3072, 531, 506, 15737, 653, 3004, 236761, 2301, 1816, 236761, 108, 2887, 236787, 1717, 1901, 2164, 8283, 107, 4722, 236787, 107, 236820, 236909, 111457, 111038, 106, 107, 105, 4368, 107, 243810, 239927, 243789, 121457], 'total_duration': 216503008, 'load_duration': 147117257, 'prompt_eval_count': 118, 'prompt_eval_duration': 14063269, 'eval_count': 5, 'eval_duration': 54900258} +[2025-09-20 14:19:21] [DEBUG] [autochat:113] ๐ŸŽญ Emoji suggestion from LLM: ๐Ÿ™„๐Ÿ˜‚๐Ÿคฆโ€โ™‚๏ธ +[2025-09-20 14:19:22] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.26) +[2025-09-20 14:19:22] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 14:19:23] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.18) +[2025-09-20 14:19:23] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +nohup: ignoring input +[2025-09-20 14:20:59] [INFO] ๐Ÿ” Modelfile loaded: ../examples/gojo.mod +[2025-09-20 14:20:59] [INFO] [ai:40] ๐Ÿ” Modelfile loaded: ../examples/gojo.mod +[2025-09-20 14:20:59] [INFO] ๐Ÿ” Loaded MODEL_NAME from .env: gemma3:12b +[2025-09-20 14:20:59] [INFO] [bot:62] ๐Ÿ” Loaded MODEL_NAME from .env: gemma3:12b +[2025-09-20 14:20:59] [INFO] ๐Ÿงน Attempting to clear VRAM before loading gemma3:12b... +[2025-09-20 14:20:59] [INFO] [bot:64] ๐Ÿงน Attempting to clear VRAM before loading gemma3:12b... +[2025-09-20 14:20:59] [INFO] ๐Ÿงน Sending safe unload request for `gemma3:12b` +[2025-09-20 14:20:59] [INFO] [ai:113] ๐Ÿงน Sending safe unload request for `gemma3:12b` +[2025-09-20 14:20:59] [INFO] ๐Ÿงฝ Ollama unload response: 200 - {"model":"gemma3:12b","created_at":"2025-09-20T18:20:59.414055505Z","response":"","done":true,"done_reason":"unload"} +[2025-09-20 14:20:59] [INFO] [ai:120] ๐Ÿงฝ Ollama unload response: 200 - {"model":"gemma3:12b","created_at":"2025-09-20T18:20:59.414055505Z","response":"","done":true,"done_reason":"unload"} +[2025-09-20 14:20:59] [INFO] ๐Ÿง  Preloading model: gemma3:12b +[2025-09-20 14:20:59] [INFO] [ai:93] ๐Ÿง  Preloading model: gemma3:12b +[2025-09-20 14:20:59] [INFO] ๐Ÿ“ฆ Model pull started successfully. +[2025-09-20 14:20:59] [INFO] [ai:100] ๐Ÿ“ฆ Model pull started successfully. +[2025-09-20 14:20:59] [INFO] ๐Ÿš€ Model `gemma3:12b` preloaded on startup. +[2025-09-20 14:20:59] [INFO] [bot:68] ๐Ÿš€ Model `gemma3:12b` preloaded on startup. +[2025-09-20 14:20:59] [INFO] โœ… Final model in use: gemma3:12b +[2025-09-20 14:20:59] [INFO] [bot:71] โœ… Final model in use: gemma3:12b +[2025-09-20 14:20:59] [INFO ] discord.client: logging in using static token +[2025-09-20 14:21:00] [INFO ] discord.gateway: Shard ID None has connected to Gateway (Session ID: 3e5c4e86f5b137dff3fc231c6ac29ca5). +โœ… Logged in as AI Bot +[2025-09-20 14:21:02] [INFO] Logged in as AI Bot +[2025-09-20 14:21:02] [INFO] [bot:281] Logged in as AI Bot +[2025-09-20 14:21:02] [INFO] ๐Ÿ›‘ Scheduler disabled in config. +[2025-09-20 14:21:02] [INFO] [scheduler:29] ๐Ÿ›‘ Scheduler disabled in config. +[2025-09-20 14:21:29] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.99) +[2025-09-20 14:21:29] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.22) +[2025-09-20 14:21:29] [INFO] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 14:21:29] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 14:21:32] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.90) +[2025-09-20 14:21:32] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.43) +[2025-09-20 14:21:32] [INFO] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 14:21:32] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 14:21:34] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.71) +[2025-09-20 14:21:34] [INFO] ๐Ÿง  Preloading model: gemma3:12b +[2025-09-20 14:21:34] [INFO] [ai:93] ๐Ÿง  Preloading model: gemma3:12b +[2025-09-20 14:21:35] [INFO] ๐Ÿ“ฆ Model pull started successfully. +[2025-09-20 14:21:35] [INFO] [ai:100] ๐Ÿ“ฆ Model pull started successfully. +[2025-09-20 14:21:35] [INFO] llm-93dae670 LLM request start model=gemma3:12b user=- context_len=0 +[2025-09-20 14:21:35] [INFO] [ai:132] llm-93dae670 LLM request start model=gemma3:12b user=- context_len=0 +[2025-09-20 14:21:35] [DEBUG] [ai:184] llm-93dae670 Sending payload to Ollama: model=gemma3:12b user=None +[2025-09-20 14:21:35] [DEBUG] [ai:185] llm-93dae670 Payload size=405 chars +[2025-09-20 14:21:38] [DEBUG] [ai:193] llm-93dae670 Raw response status=200 +[2025-09-20 14:21:38] [DEBUG] [ai:194] llm-93dae670 Raw response body={"model":"gemma3:12b","created_at":"2025-09-20T18:21:38.614117471Z","response":"๐Ÿค”๐Ÿคจ","done":true,"done_reason":"stop","context":[105,2364,107,236820,236909,9731,111038,3048,659,555,1277,236756,3764,5400,699,219769,208651,751,119814,236761,1599,236858,500,16690,236762,236764,8632,236764,532,1378,14620,236764,840,19297,20111,529,822,3272,236761,95419,528,496,4532,15737,236761,15428,19921,611,236789,500,496,9894,21603,236909,643,111038,2887,236787,1599,659,22616,236764,614,73296,2872,1015,6178,111730,531,9434,531,2430,10396,236761,17770,496,3618,236764,994,44917,236743,236770,236964,236800,22690,111730,528,3072,531,506,15737,653,3004,236761,2301,1816,236761,108,2887,236787,1717,1901,2164,8283,107,4722,236787,107,236820,236909,111457,111038,106,107,105,4368,107,242846,248294],"total_duration":3493747463,"load_duration":3242303444,"prompt_eval_count":118,"prompt_eval_duration":203903072,"eval_count":3,"eval_duration":47130599} +[2025-09-20 14:21:38] [INFO] llm-93dae670 LLM response model=gemma3:12b duration=3.509s summary=๐Ÿค”๐Ÿคจ +[2025-09-20 14:21:38] [INFO] [ai:140] llm-93dae670 LLM response model=gemma3:12b duration=3.509s summary=๐Ÿค”๐Ÿคจ +[2025-09-20 14:21:38] [DEBUG] [ai:142] llm-93dae670 LLM raw response: {'model': 'gemma3:12b', 'created_at': '2025-09-20T18:21:38.614117471Z', 'response': '๐Ÿค”๐Ÿคจ', 'done': True, 'done_reason': 'stop', 'context': [105, 2364, 107, 236820, 236909, 9731, 111038, 3048, 659, 555, 1277, 236756, 3764, 5400, 699, 219769, 208651, 751, 119814, 236761, 1599, 236858, 500, 16690, 236762, 236764, 8632, 236764, 532, 1378, 14620, 236764, 840, 19297, 20111, 529, 822, 3272, 236761, 95419, 528, 496, 4532, 15737, 236761, 15428, 19921, 611, 236789, 500, 496, 9894, 21603, 236909, 643, 111038, 2887, 236787, 1599, 659, 22616, 236764, 614, 73296, 2872, 1015, 6178, 111730, 531, 9434, 531, 2430, 10396, 236761, 17770, 496, 3618, 236764, 994, 44917, 236743, 236770, 236964, 236800, 22690, 111730, 528, 3072, 531, 506, 15737, 653, 3004, 236761, 2301, 1816, 236761, 108, 2887, 236787, 1717, 1901, 2164, 8283, 107, 4722, 236787, 107, 236820, 236909, 111457, 111038, 106, 107, 105, 4368, 107, 242846, 248294], 'total_duration': 3493747463, 'load_duration': 3242303444, 'prompt_eval_count': 118, 'prompt_eval_duration': 203903072, 'eval_count': 3, 'eval_duration': 47130599} +[2025-09-20 14:21:38] [DEBUG] [autochat:113] ๐ŸŽญ Emoji suggestion from LLM: ๐Ÿค”๐Ÿคจ +[2025-09-20 14:21:39] [INFO] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 14:21:39] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 14:21:41] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.92) +[2025-09-20 14:21:41] [INFO] ๐Ÿง  Preloading model: gemma3:12b +[2025-09-20 14:21:41] [INFO] [ai:93] ๐Ÿง  Preloading model: gemma3:12b +[2025-09-20 14:21:41] [INFO] ๐Ÿ“ฆ Model pull started successfully. +[2025-09-20 14:21:41] [INFO] [ai:100] ๐Ÿ“ฆ Model pull started successfully. +[2025-09-20 14:21:41] [INFO] llm-68d60731 LLM request start model=gemma3:12b user=- context_len=0 +[2025-09-20 14:21:41] [INFO] [ai:132] llm-68d60731 LLM request start model=gemma3:12b user=- context_len=0 +[2025-09-20 14:21:41] [DEBUG] [ai:184] llm-68d60731 Sending payload to Ollama: model=gemma3:12b user=None +[2025-09-20 14:21:41] [DEBUG] [ai:185] llm-68d60731 Payload size=405 chars +[2025-09-20 14:21:41] [DEBUG] [ai:193] llm-68d60731 Raw response status=200 +[2025-09-20 14:21:41] [DEBUG] [ai:194] llm-68d60731 Raw response body={"model":"gemma3:12b","created_at":"2025-09-20T18:21:41.828356105Z","response":"๐Ÿค”๐Ÿ’ป","done":true,"done_reason":"stop","context":[105,2364,107,236820,236909,9731,111038,3048,659,555,1277,236756,3764,5400,699,219769,208651,751,119814,236761,1599,236858,500,16690,236762,236764,8632,236764,532,1378,14620,236764,840,19297,20111,529,822,3272,236761,95419,528,496,4532,15737,236761,15428,19921,611,236789,500,496,9894,21603,236909,643,111038,2887,236787,1599,659,22616,236764,614,73296,2872,1015,6178,111730,531,9434,531,2430,10396,236761,17770,496,3618,236764,994,44917,236743,236770,236964,236800,22690,111730,528,3072,531,506,15737,653,3004,236761,2301,1816,236761,108,2887,236787,1717,1901,2164,8283,107,4722,236787,107,236820,236909,111457,111038,106,107,105,4368,107,242846,244862],"total_duration":187608389,"load_duration":145998816,"prompt_eval_count":118,"prompt_eval_duration":14069005,"eval_count":3,"eval_duration":27205814} +[2025-09-20 14:21:41] [INFO] llm-68d60731 LLM response model=gemma3:12b duration=0.190s summary=๐Ÿค”๐Ÿ’ป +[2025-09-20 14:21:41] [INFO] [ai:140] llm-68d60731 LLM response model=gemma3:12b duration=0.190s summary=๐Ÿค”๐Ÿ’ป +[2025-09-20 14:21:41] [DEBUG] [ai:142] llm-68d60731 LLM raw response: {'model': 'gemma3:12b', 'created_at': '2025-09-20T18:21:41.828356105Z', 'response': '๐Ÿค”๐Ÿ’ป', 'done': True, 'done_reason': 'stop', 'context': [105, 2364, 107, 236820, 236909, 9731, 111038, 3048, 659, 555, 1277, 236756, 3764, 5400, 699, 219769, 208651, 751, 119814, 236761, 1599, 236858, 500, 16690, 236762, 236764, 8632, 236764, 532, 1378, 14620, 236764, 840, 19297, 20111, 529, 822, 3272, 236761, 95419, 528, 496, 4532, 15737, 236761, 15428, 19921, 611, 236789, 500, 496, 9894, 21603, 236909, 643, 111038, 2887, 236787, 1599, 659, 22616, 236764, 614, 73296, 2872, 1015, 6178, 111730, 531, 9434, 531, 2430, 10396, 236761, 17770, 496, 3618, 236764, 994, 44917, 236743, 236770, 236964, 236800, 22690, 111730, 528, 3072, 531, 506, 15737, 653, 3004, 236761, 2301, 1816, 236761, 108, 2887, 236787, 1717, 1901, 2164, 8283, 107, 4722, 236787, 107, 236820, 236909, 111457, 111038, 106, 107, 105, 4368, 107, 242846, 244862], 'total_duration': 187608389, 'load_duration': 145998816, 'prompt_eval_count': 118, 'prompt_eval_duration': 14069005, 'eval_count': 3, 'eval_duration': 27205814} +[2025-09-20 14:21:41] [DEBUG] [autochat:113] ๐ŸŽญ Emoji suggestion from LLM: ๐Ÿค”๐Ÿ’ป +[2025-09-20 14:21:42] [INFO] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 14:21:42] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 14:46:17] [INFO] [ai:40] ๐Ÿ” Modelfile loaded: ../examples/gojo.mod +[2025-09-20 14:46:17] [INFO] [bot:62] ๐Ÿ” Loaded MODEL_NAME from .env: gemma3:12b +[2025-09-20 14:46:17] [INFO] [bot:64] ๐Ÿงน Attempting to clear VRAM before loading gemma3:12b... +[2025-09-20 14:46:17] [INFO] [ai:113] ๐Ÿงน Sending safe unload request for `gemma3:12b` +[2025-09-20 14:46:17] [INFO] [ai:120] ๐Ÿงฝ Ollama unload response: 200 - {"model":"gemma3:12b","created_at":"2025-09-20T18:46:17.621223308Z","response":"","done":true,"done_reason":"unload"} +[2025-09-20 14:46:17] [INFO] [ai:93] ๐Ÿง  Preloading model: gemma3:12b +[2025-09-20 14:46:17] [INFO] [ai:100] ๐Ÿ“ฆ Model pull started successfully. +[2025-09-20 14:46:17] [INFO] [bot:68] ๐Ÿš€ Model `gemma3:12b` preloaded on startup. +[2025-09-20 14:46:17] [INFO] [bot:71] โœ… Final model in use: gemma3:12b +[2025-09-20 14:46:20] [INFO] [bot:281] Logged in as AI Bot +[2025-09-20 14:46:20] [INFO] [scheduler:29] ๐Ÿ›‘ Scheduler disabled in config. +[2025-09-20 14:46:30] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.57) +[2025-09-20 14:46:30] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.28) +[2025-09-20 14:46:30] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.10) +[2025-09-20 14:46:30] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.69) +[2025-09-20 14:46:30] [INFO] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 14:46:30] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 14:46:30] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 14:46:35] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.94) +[2025-09-20 14:46:35] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.67) +[2025-09-20 14:46:35] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 14:46:35] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.80) +[2025-09-20 14:46:35] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.49) +[2025-09-20 14:46:35] [INFO] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 14:46:35] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 14:48:08] [INFO ] discord.gateway: Shard ID None has successfully RESUMED session 3e5c4e86f5b137dff3fc231c6ac29ca5. +nohup: ignoring input +[2025-09-20 14:48:32] [INFO] ๐Ÿ” Modelfile loaded: ../examples/gojo.mod +[2025-09-20 14:48:32] [INFO] [ai:40] ๐Ÿ” Modelfile loaded: ../examples/gojo.mod +[2025-09-20 14:48:32] [INFO] ๐Ÿ” Loaded MODEL_NAME from .env: gemma3:12b +[2025-09-20 14:48:32] [INFO] [bot:65] ๐Ÿ” Loaded MODEL_NAME from .env: gemma3:12b +[2025-09-20 14:48:32] [INFO] ๐Ÿงน Attempting to clear VRAM before loading gemma3:12b... +[2025-09-20 14:48:32] [INFO] [bot:67] ๐Ÿงน Attempting to clear VRAM before loading gemma3:12b... +[2025-09-20 14:48:32] [INFO] ๐Ÿงน Sending safe unload request for `gemma3:12b` +[2025-09-20 14:48:32] [INFO] [ai:113] ๐Ÿงน Sending safe unload request for `gemma3:12b` +[2025-09-20 14:48:32] [INFO] ๐Ÿงฝ Ollama unload response: 200 - {"model":"gemma3:12b","created_at":"2025-09-20T18:48:32.380324129Z","response":"","done":true,"done_reason":"unload"} +[2025-09-20 14:48:32] [INFO] [ai:120] ๐Ÿงฝ Ollama unload response: 200 - {"model":"gemma3:12b","created_at":"2025-09-20T18:48:32.380324129Z","response":"","done":true,"done_reason":"unload"} +[2025-09-20 14:48:32] [INFO] ๐Ÿง  Preloading model: gemma3:12b +[2025-09-20 14:48:32] [INFO] [ai:93] ๐Ÿง  Preloading model: gemma3:12b +[2025-09-20 14:48:32] [INFO] ๐Ÿ“ฆ Model pull started successfully. +[2025-09-20 14:48:32] [INFO] [ai:100] ๐Ÿ“ฆ Model pull started successfully. +[2025-09-20 14:48:32] [INFO] ๐Ÿš€ Model `gemma3:12b` preloaded on startup. +[2025-09-20 14:48:32] [INFO] [bot:71] ๐Ÿš€ Model `gemma3:12b` preloaded on startup. +[2025-09-20 14:48:32] [INFO] โœ… Final model in use: gemma3:12b +[2025-09-20 14:48:32] [INFO] [bot:74] โœ… Final model in use: gemma3:12b +[2025-09-20 14:48:32] [INFO ] discord.client: logging in using static token +[2025-09-20 14:48:33] [INFO ] discord.gateway: Shard ID None has connected to Gateway (Session ID: 9841965c98ac0727a8f1fff8f27dbde3). +โœ… Logged in as AI Bot +[2025-09-20 14:48:35] [INFO] Logged in as AI Bot +[2025-09-20 14:48:35] [INFO] [bot:284] Logged in as AI Bot +[2025-09-20 14:48:35] [INFO] ๐Ÿ›‘ Scheduler disabled in config. +[2025-09-20 14:48:35] [INFO] [scheduler:29] ๐Ÿ›‘ Scheduler disabled in config. +[2025-09-20 14:48:39] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.29) +[2025-09-20 14:48:39] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.43) +[2025-09-20 14:48:39] [INFO] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 14:48:39] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 14:48:45] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.55) +[2025-09-20 14:48:45] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.94) +[2025-09-20 14:48:45] [INFO] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 14:48:45] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 14:49:25] [INFO] [ai:40] ๐Ÿ” Modelfile loaded: ../examples/gojo.mod +[2025-09-20 14:49:25] [INFO] [bot:65] ๐Ÿ” Loaded MODEL_NAME from .env: gemma3:12b +[2025-09-20 14:49:25] [INFO] [bot:67] ๐Ÿงน Attempting to clear VRAM before loading gemma3:12b... +[2025-09-20 14:49:25] [INFO] [ai:113] ๐Ÿงน Sending safe unload request for `gemma3:12b` +[2025-09-20 14:49:25] [INFO] [ai:120] ๐Ÿงฝ Ollama unload response: 200 - {"model":"gemma3:12b","created_at":"2025-09-20T18:49:25.288430651Z","response":"","done":true,"done_reason":"unload"} +[2025-09-20 14:49:25] [INFO] [ai:93] ๐Ÿง  Preloading model: gemma3:12b +[2025-09-20 14:49:25] [INFO] [ai:100] ๐Ÿ“ฆ Model pull started successfully. +[2025-09-20 14:49:25] [INFO] [bot:71] ๐Ÿš€ Model `gemma3:12b` preloaded on startup. +[2025-09-20 14:49:25] [INFO] [bot:74] โœ… Final model in use: gemma3:12b +[2025-09-20 14:49:28] [INFO] [bot:284] Logged in as AI Bot +[2025-09-20 14:49:28] [INFO] [scheduler:29] ๐Ÿ›‘ Scheduler disabled in config. +[2025-09-20 14:49:31] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.41) +[2025-09-20 14:49:31] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.50) +[2025-09-20 14:49:31] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 14:49:31] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.37) +[2025-09-20 14:49:31] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.55) +[2025-09-20 14:49:31] [INFO] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 14:49:31] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +nohup: ignoring input +[2025-09-20 14:50:29] [INFO] ๐Ÿ” Modelfile loaded: ../examples/gojo.mod +[2025-09-20 14:50:29] [INFO] [ai:40] ๐Ÿ” Modelfile loaded: ../examples/gojo.mod +[2025-09-20 14:50:29] [INFO] ๐Ÿ” Loaded MODEL_NAME from .env: gemma3:12b +[2025-09-20 14:50:29] [INFO] [bot:65] ๐Ÿ” Loaded MODEL_NAME from .env: gemma3:12b +[2025-09-20 14:50:29] [INFO] ๐Ÿงน Attempting to clear VRAM before loading gemma3:12b... +[2025-09-20 14:50:29] [INFO] [bot:67] ๐Ÿงน Attempting to clear VRAM before loading gemma3:12b... +[2025-09-20 14:50:29] [INFO] ๐Ÿงน Sending safe unload request for `gemma3:12b` +[2025-09-20 14:50:29] [INFO] [ai:113] ๐Ÿงน Sending safe unload request for `gemma3:12b` +[2025-09-20 14:50:29] [INFO] ๐Ÿงฝ Ollama unload response: 200 - {"model":"gemma3:12b","created_at":"2025-09-20T18:50:29.064866391Z","response":"","done":true,"done_reason":"unload"} +[2025-09-20 14:50:29] [INFO] [ai:120] ๐Ÿงฝ Ollama unload response: 200 - {"model":"gemma3:12b","created_at":"2025-09-20T18:50:29.064866391Z","response":"","done":true,"done_reason":"unload"} +[2025-09-20 14:50:29] [INFO] ๐Ÿง  Preloading model: gemma3:12b +[2025-09-20 14:50:29] [INFO] [ai:93] ๐Ÿง  Preloading model: gemma3:12b +[2025-09-20 14:50:29] [INFO] ๐Ÿ“ฆ Model pull started successfully. +[2025-09-20 14:50:29] [INFO] [ai:100] ๐Ÿ“ฆ Model pull started successfully. +[2025-09-20 14:50:29] [INFO] ๐Ÿš€ Model `gemma3:12b` preloaded on startup. +[2025-09-20 14:50:29] [INFO] [bot:71] ๐Ÿš€ Model `gemma3:12b` preloaded on startup. +[2025-09-20 14:50:29] [INFO] โœ… Final model in use: gemma3:12b +[2025-09-20 14:50:29] [INFO] [bot:74] โœ… Final model in use: gemma3:12b +[2025-09-20 14:50:29] [INFO ] discord.client: logging in using static token +[2025-09-20 14:50:29] [INFO ] discord.gateway: Shard ID None has connected to Gateway (Session ID: 2574d17b97e34954eed7eec44ce31576). +โœ… Logged in as AI Bot +[2025-09-20 14:50:31] [INFO] Logged in as AI Bot +[2025-09-20 14:50:31] [INFO] [bot:284] Logged in as AI Bot +[2025-09-20 14:50:31] [INFO] ๐Ÿ›‘ Scheduler disabled in config. +[2025-09-20 14:50:31] [INFO] [scheduler:29] ๐Ÿ›‘ Scheduler disabled in config. +[2025-09-20 14:53:57] [INFO] ๐Ÿง  Preloading model: gemma3:12b +[2025-09-20 14:53:57] [INFO] [ai:93] ๐Ÿง  Preloading model: gemma3:12b +[2025-09-20 14:53:57] [INFO] ๐Ÿ“ฆ Model pull started successfully. +[2025-09-20 14:53:57] [INFO] [ai:100] ๐Ÿ“ฆ Model pull started successfully. +[2025-09-20 14:53:57] [INFO] llm-3c80482f LLM request start model=gemma3:12b user=- context_len=0 +[2025-09-20 14:53:57] [INFO] [ai:132] llm-3c80482f LLM request start model=gemma3:12b user=- context_len=0 +[2025-09-20 14:53:57] [DEBUG] [ai:184] llm-3c80482f Sending payload to Ollama: model=gemma3:12b user=None +[2025-09-20 14:53:57] [DEBUG] [ai:185] llm-3c80482f Payload size=405 chars +[2025-09-20 14:54:02] [DEBUG] [ai:193] llm-3c80482f Raw response status=200 +[2025-09-20 14:54:02] [DEBUG] [ai:194] llm-3c80482f Raw response body={"model":"gemma3:12b","created_at":"2025-09-20T18:54:02.209515032Z","response":"๐Ÿค”๐Ÿคจ","done":true,"done_reason":"stop","context":[105,2364,107,236820,236909,9731,111038,3048,659,555,1277,236756,3764,5400,699,219769,208651,751,119814,236761,1599,236858,500,16690,236762,236764,8632,236764,532,1378,14620,236764,840,19297,20111,529,822,3272,236761,95419,528,496,4532,15737,236761,15428,19921,611,236789,500,496,9894,21603,236909,643,111038,2887,236787,1599,659,22616,236764,614,73296,2872,1015,6178,111730,531,9434,531,2430,10396,236761,17770,496,3618,236764,994,44917,236743,236770,236964,236800,22690,111730,528,3072,531,506,15737,653,3004,236761,2301,1816,236761,108,2887,236787,1717,1901,2164,8283,107,4722,236787,107,236820,236909,111457,111038,106,107,105,4368,107,242846,248294],"total_duration":4516258539,"load_duration":4259336523,"prompt_eval_count":118,"prompt_eval_duration":205447411,"eval_count":3,"eval_duration":51017445} +[2025-09-20 14:54:02] [INFO] llm-3c80482f LLM response model=gemma3:12b duration=4.531s summary=๐Ÿค”๐Ÿคจ +[2025-09-20 14:54:02] [INFO] [ai:140] llm-3c80482f LLM response model=gemma3:12b duration=4.531s summary=๐Ÿค”๐Ÿคจ +[2025-09-20 14:54:02] [DEBUG] [ai:142] llm-3c80482f LLM raw response: {'model': 'gemma3:12b', 'created_at': '2025-09-20T18:54:02.209515032Z', 'response': '๐Ÿค”๐Ÿคจ', 'done': True, 'done_reason': 'stop', 'context': [105, 2364, 107, 236820, 236909, 9731, 111038, 3048, 659, 555, 1277, 236756, 3764, 5400, 699, 219769, 208651, 751, 119814, 236761, 1599, 236858, 500, 16690, 236762, 236764, 8632, 236764, 532, 1378, 14620, 236764, 840, 19297, 20111, 529, 822, 3272, 236761, 95419, 528, 496, 4532, 15737, 236761, 15428, 19921, 611, 236789, 500, 496, 9894, 21603, 236909, 643, 111038, 2887, 236787, 1599, 659, 22616, 236764, 614, 73296, 2872, 1015, 6178, 111730, 531, 9434, 531, 2430, 10396, 236761, 17770, 496, 3618, 236764, 994, 44917, 236743, 236770, 236964, 236800, 22690, 111730, 528, 3072, 531, 506, 15737, 653, 3004, 236761, 2301, 1816, 236761, 108, 2887, 236787, 1717, 1901, 2164, 8283, 107, 4722, 236787, 107, 236820, 236909, 111457, 111038, 106, 107, 105, 4368, 107, 242846, 248294], 'total_duration': 4516258539, 'load_duration': 4259336523, 'prompt_eval_count': 118, 'prompt_eval_duration': 205447411, 'eval_count': 3, 'eval_duration': 51017445} +[2025-09-20 14:54:02] [DEBUG] [autochat:113] ๐ŸŽญ Emoji suggestion from LLM: ๐Ÿค”๐Ÿคจ +[2025-09-20 14:54:03] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.83) +[2025-09-20 14:54:03] [INFO] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 14:54:03] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 14:54:03] [DEBUG] [bot:361] modfile_info invoked: cmd=modfile info user=161149541171593216 msg=1419033863518421166 +[2025-09-20 14:54:03] [DEBUG] [bot:382] modfile_info: preparing to send reply for msg=1419033863518421166 +[2025-09-20 14:54:03] [DEBUG] [bot:398] modfile_info: sent payload for msg=1419033863518421166 +nohup: ignoring input +[2025-09-20 15:00:12] [INFO] ๐Ÿ” Modelfile loaded: ../examples/gojo.mod +[2025-09-20 15:00:12] [INFO] [ai:40] ๐Ÿ” Modelfile loaded: ../examples/gojo.mod +[2025-09-20 15:00:12] [INFO] ๐Ÿ” Loaded MODEL_NAME from .env: gemma3:12b +[2025-09-20 15:00:12] [INFO] [bot:65] ๐Ÿ” Loaded MODEL_NAME from .env: gemma3:12b +[2025-09-20 15:00:12] [INFO] ๐Ÿงน Attempting to clear VRAM before loading gemma3:12b... +[2025-09-20 15:00:12] [INFO] [bot:67] ๐Ÿงน Attempting to clear VRAM before loading gemma3:12b... +[2025-09-20 15:00:12] [INFO] ๐Ÿงน Sending safe unload request for `gemma3:12b` +[2025-09-20 15:00:12] [INFO] [ai:113] ๐Ÿงน Sending safe unload request for `gemma3:12b` +[2025-09-20 15:00:12] [INFO] ๐Ÿงฝ Ollama unload response: 200 - {"model":"gemma3:12b","created_at":"2025-09-20T19:00:12.70420662Z","response":"","done":true,"done_reason":"unload"} +[2025-09-20 15:00:12] [INFO] [ai:120] ๐Ÿงฝ Ollama unload response: 200 - {"model":"gemma3:12b","created_at":"2025-09-20T19:00:12.70420662Z","response":"","done":true,"done_reason":"unload"} +[2025-09-20 15:00:12] [INFO] ๐Ÿง  Preloading model: gemma3:12b +[2025-09-20 15:00:12] [INFO] [ai:93] ๐Ÿง  Preloading model: gemma3:12b +[2025-09-20 15:00:12] [INFO] ๐Ÿ“ฆ Model pull started successfully. +[2025-09-20 15:00:12] [INFO] [ai:100] ๐Ÿ“ฆ Model pull started successfully. +[2025-09-20 15:00:12] [INFO] ๐Ÿš€ Model `gemma3:12b` preloaded on startup. +[2025-09-20 15:00:12] [INFO] [bot:71] ๐Ÿš€ Model `gemma3:12b` preloaded on startup. +[2025-09-20 15:00:12] [INFO] โœ… Final model in use: gemma3:12b +[2025-09-20 15:00:12] [INFO] [bot:74] โœ… Final model in use: gemma3:12b +[2025-09-20 15:00:12] [INFO ] discord.client: logging in using static token +[2025-09-20 15:00:14] [INFO ] discord.gateway: Shard ID None has connected to Gateway (Session ID: eed4b6aaccccd97b5456c73e342e25a1). +โœ… Logged in as AI Bot +[2025-09-20 15:00:16] [INFO] Logged in as AI Bot +[2025-09-20 15:00:16] [INFO] [bot:289] Logged in as AI Bot +[2025-09-20 15:00:16] [INFO] ๐Ÿ›‘ Scheduler disabled in config. +[2025-09-20 15:00:16] [INFO] [scheduler:29] ๐Ÿ›‘ Scheduler disabled in config. +[2025-09-20 15:00:27] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.99) +[2025-09-20 15:00:27] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.70) +[2025-09-20 15:00:27] [INFO] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 15:00:27] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 15:00:28] [DEBUG] [bot:366] modfile_info invoked: cmd=modfile info user=161149541171593216 msg=1419035499590451321 +[2025-09-20 15:00:28] [DEBUG] [bot:387] modfile_info: preparing to send reply for msg=1419035499590451321 +[2025-09-20 15:00:28] [DEBUG] [bot:243] on_message: observed own message id=1419035502119489546 channel=1380999713272238151 +[2025-09-20 15:00:28] [DEBUG] [bot:406] modfile_info: sent payload for msg=1419035499590451321 -> sent_id=1419035502119489546 channel=1380999713272238151 +[2025-09-20 15:00:34] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.20) +[2025-09-20 15:00:34] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.26) +[2025-09-20 15:00:34] [INFO] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 15:00:34] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 15:00:34] [DEBUG] [bot:366] modfile_info invoked: cmd=modfile info user=161149541171593216 msg=1419035528778748005 +[2025-09-20 15:00:34] [DEBUG] [bot:387] modfile_info: preparing to send reply for msg=1419035528778748005 +[2025-09-20 15:00:34] [DEBUG] [bot:243] on_message: observed own message id=1419035529994833921 channel=1380999713272238151 +[2025-09-20 15:00:34] [DEBUG] [bot:406] modfile_info: sent payload for msg=1419035528778748005 -> sent_id=1419035529994833921 channel=1380999713272238151 +[2025-09-20 15:04:01] [INFO] [ai:40] ๐Ÿ” Modelfile loaded: ../examples/gojo.mod +[2025-09-20 15:04:01] [INFO] [bot:65] ๐Ÿ” Loaded MODEL_NAME from .env: gemma3:12b +[2025-09-20 15:04:01] [INFO] [bot:67] ๐Ÿงน Attempting to clear VRAM before loading gemma3:12b... +[2025-09-20 15:04:01] [INFO] [ai:113] ๐Ÿงน Sending safe unload request for `gemma3:12b` +[2025-09-20 15:04:01] [INFO] [ai:120] ๐Ÿงฝ Ollama unload response: 200 - {"model":"gemma3:12b","created_at":"2025-09-20T19:04:01.060550365Z","response":"","done":true,"done_reason":"unload"} +[2025-09-20 15:04:01] [INFO] [ai:93] ๐Ÿง  Preloading model: gemma3:12b +[2025-09-20 15:04:01] [INFO] [ai:100] ๐Ÿ“ฆ Model pull started successfully. +[2025-09-20 15:04:01] [INFO] [bot:71] ๐Ÿš€ Model `gemma3:12b` preloaded on startup. +[2025-09-20 15:04:01] [INFO] [bot:74] โœ… Final model in use: gemma3:12b +[2025-09-20 15:04:04] [INFO] [bot:289] Logged in as AI Bot +[2025-09-20 15:04:04] [INFO] [scheduler:29] ๐Ÿ›‘ Scheduler disabled in config. +[2025-09-20 15:04:13] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.85) +[2025-09-20 15:04:13] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.93) +[2025-09-20 15:04:13] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 15:04:13] [INFO] ๐Ÿง  Preloading model: gemma3:12b +[2025-09-20 15:04:13] [INFO] [ai:93] ๐Ÿง  Preloading model: gemma3:12b +[2025-09-20 15:04:13] [INFO] ๐Ÿ“ฆ Model pull started successfully. +[2025-09-20 15:04:13] [INFO] [ai:100] ๐Ÿ“ฆ Model pull started successfully. +[2025-09-20 15:04:13] [INFO] llm-9d680449 LLM request start model=gemma3:12b user=- context_len=0 +[2025-09-20 15:04:13] [INFO] [ai:132] llm-9d680449 LLM request start model=gemma3:12b user=- context_len=0 +[2025-09-20 15:04:13] [DEBUG] [ai:184] llm-9d680449 Sending payload to Ollama: model=gemma3:12b user=None +[2025-09-20 15:04:13] [DEBUG] [ai:185] llm-9d680449 Payload size=405 chars +[2025-09-20 15:04:13] [DEBUG] [bot:366] modfile_info invoked: cmd=modfile info user=161149541171593216 msg=1419036447511412856 +[2025-09-20 15:04:13] [DEBUG] [bot:387] modfile_info: preparing to send reply for msg=1419036447511412856 +[2025-09-20 15:04:13] [DEBUG] [bot:243] on_message: observed own message id=1419036449256243210 channel=1380999713272238151 +[2025-09-20 15:04:14] [DEBUG] [bot:406] modfile_info: sent payload for msg=1419036447511412856 -> sent_id=1419036449256243210 channel=1380999713272238151 +[2025-09-20 15:04:17] [DEBUG] [ai:193] llm-9d680449 Raw response status=200 +[2025-09-20 15:04:17] [DEBUG] [ai:194] llm-9d680449 Raw response body={"model":"gemma3:12b","created_at":"2025-09-20T19:04:17.308741965Z","response":"๐Ÿ˜‚โœจ","done":true,"done_reason":"stop","context":[105,2364,107,236820,236909,9731,111038,3048,659,555,1277,236756,3764,5400,699,219769,208651,751,119814,236761,1599,236858,500,16690,236762,236764,8632,236764,532,1378,14620,236764,840,19297,20111,529,822,3272,236761,95419,528,496,4532,15737,236761,15428,19921,611,236789,500,496,9894,21603,236909,643,111038,2887,236787,1599,659,22616,236764,614,73296,2872,1015,6178,111730,531,9434,531,2430,10396,236761,17770,496,3618,236764,994,44917,236743,236770,236964,236800,22690,111730,528,3072,531,506,15737,653,3004,236761,2301,1816,236761,108,2887,236787,1717,1901,2164,8283,107,4722,236787,107,236820,236909,111457,111038,106,107,105,4368,107,239927,239794],"total_duration":3572151729,"load_duration":3317234706,"prompt_eval_count":118,"prompt_eval_duration":204624732,"eval_count":3,"eval_duration":49820406} +[2025-09-20 15:04:17] [INFO] llm-9d680449 LLM response model=gemma3:12b duration=3.588s summary=๐Ÿ˜‚โœจ +[2025-09-20 15:04:17] [INFO] [ai:140] llm-9d680449 LLM response model=gemma3:12b duration=3.588s summary=๐Ÿ˜‚โœจ +[2025-09-20 15:04:17] [DEBUG] [ai:142] llm-9d680449 LLM raw response: {'model': 'gemma3:12b', 'created_at': '2025-09-20T19:04:17.308741965Z', 'response': '๐Ÿ˜‚โœจ', 'done': True, 'done_reason': 'stop', 'context': [105, 2364, 107, 236820, 236909, 9731, 111038, 3048, 659, 555, 1277, 236756, 3764, 5400, 699, 219769, 208651, 751, 119814, 236761, 1599, 236858, 500, 16690, 236762, 236764, 8632, 236764, 532, 1378, 14620, 236764, 840, 19297, 20111, 529, 822, 3272, 236761, 95419, 528, 496, 4532, 15737, 236761, 15428, 19921, 611, 236789, 500, 496, 9894, 21603, 236909, 643, 111038, 2887, 236787, 1599, 659, 22616, 236764, 614, 73296, 2872, 1015, 6178, 111730, 531, 9434, 531, 2430, 10396, 236761, 17770, 496, 3618, 236764, 994, 44917, 236743, 236770, 236964, 236800, 22690, 111730, 528, 3072, 531, 506, 15737, 653, 3004, 236761, 2301, 1816, 236761, 108, 2887, 236787, 1717, 1901, 2164, 8283, 107, 4722, 236787, 107, 236820, 236909, 111457, 111038, 106, 107, 105, 4368, 107, 239927, 239794], 'total_duration': 3572151729, 'load_duration': 3317234706, 'prompt_eval_count': 118, 'prompt_eval_duration': 204624732, 'eval_count': 3, 'eval_duration': 49820406} +[2025-09-20 15:04:17] [DEBUG] [autochat:113] ๐ŸŽญ Emoji suggestion from LLM: ๐Ÿ˜‚โœจ +[2025-09-20 15:04:17] [DEBUG] [bot:243] on_message: observed own message id=1419036449256243210 channel=1380999713272238151 +[2025-09-20 15:04:17] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.52) +[2025-09-20 15:04:17] [INFO] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 15:04:17] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 15:04:17] [DEBUG] [bot:366] modfile_info invoked: cmd=modfile info user=161149541171593216 msg=1419036447511412856 +[2025-09-20 15:04:17] [DEBUG] [bot:387] modfile_info: preparing to send reply for msg=1419036447511412856 +[2025-09-20 15:04:17] [DEBUG] [bot:243] on_message: observed own message id=1419036465698050200 channel=1380999713272238151 +[2025-09-20 15:04:17] [DEBUG] [bot:243] on_message: observed own message id=1419036465698050200 channel=1380999713272238151 +[2025-09-20 15:04:17] [DEBUG] [bot:406] modfile_info: sent payload for msg=1419036447511412856 -> sent_id=1419036465698050200 channel=1380999713272238151 +[2025-09-20 15:04:24] [INFO] [ai:93] ๐Ÿง  Preloading model: gemma3:12b +[2025-09-20 15:04:25] [INFO] ๐Ÿง  Preloading model: gemma3:12b +[2025-09-20 15:04:25] [INFO] [ai:93] ๐Ÿง  Preloading model: gemma3:12b +[2025-09-20 15:04:25] [INFO] [ai:100] ๐Ÿ“ฆ Model pull started successfully. +[2025-09-20 15:04:25] [INFO] [ai:132] llm-d00b278c LLM request start model=gemma3:12b user=- context_len=0 +[2025-09-20 15:04:25] [DEBUG] [ai:184] llm-d00b278c Sending payload to Ollama: model=gemma3:12b user=None +[2025-09-20 15:04:25] [DEBUG] [ai:185] llm-d00b278c Payload size=405 chars +[2025-09-20 15:04:25] [INFO] ๐Ÿ“ฆ Model pull started successfully. +[2025-09-20 15:04:25] [INFO] [ai:100] ๐Ÿ“ฆ Model pull started successfully. +[2025-09-20 15:04:25] [INFO] llm-4e53403d LLM request start model=gemma3:12b user=- context_len=0 +[2025-09-20 15:04:25] [INFO] [ai:132] llm-4e53403d LLM request start model=gemma3:12b user=- context_len=0 +[2025-09-20 15:04:25] [DEBUG] [ai:184] llm-4e53403d Sending payload to Ollama: model=gemma3:12b user=None +[2025-09-20 15:04:25] [DEBUG] [ai:185] llm-4e53403d Payload size=405 chars +[2025-09-20 15:04:25] [DEBUG] [ai:193] llm-d00b278c Raw response status=200 +[2025-09-20 15:04:25] [DEBUG] [ai:194] llm-d00b278c Raw response body={"model":"gemma3:12b","created_at":"2025-09-20T19:04:25.359175507Z","response":"๐Ÿค”๐Ÿ‘€","done":true,"done_reason":"stop","context":[105,2364,107,236820,236909,9731,111038,3048,659,555,1277,236756,3764,5400,699,219769,208651,751,119814,236761,1599,236858,500,16690,236762,236764,8632,236764,532,1378,14620,236764,840,19297,20111,529,822,3272,236761,95419,528,496,4532,15737,236761,15428,19921,611,236789,500,496,9894,21603,236909,643,111038,2887,236787,1599,659,22616,236764,614,73296,2872,1015,6178,111730,531,9434,531,2430,10396,236761,17770,496,3618,236764,994,44917,236743,236770,236964,236800,22690,111730,528,3072,531,506,15737,653,3004,236761,2301,1816,236761,108,2887,236787,1717,1901,2164,1694,107,4722,236787,107,236820,236909,111457,111038,106,107,105,4368,107,242846,242509],"total_duration":218701295,"load_duration":144673481,"prompt_eval_count":118,"prompt_eval_duration":43918420,"eval_count":3,"eval_duration":29769207} +[2025-09-20 15:04:25] [INFO] [ai:140] llm-d00b278c LLM response model=gemma3:12b duration=0.221s summary=๐Ÿค”๐Ÿ‘€ +[2025-09-20 15:04:25] [DEBUG] [ai:142] llm-d00b278c LLM raw response: {'model': 'gemma3:12b', 'created_at': '2025-09-20T19:04:25.359175507Z', 'response': '๐Ÿค”๐Ÿ‘€', 'done': True, 'done_reason': 'stop', 'context': [105, 2364, 107, 236820, 236909, 9731, 111038, 3048, 659, 555, 1277, 236756, 3764, 5400, 699, 219769, 208651, 751, 119814, 236761, 1599, 236858, 500, 16690, 236762, 236764, 8632, 236764, 532, 1378, 14620, 236764, 840, 19297, 20111, 529, 822, 3272, 236761, 95419, 528, 496, 4532, 15737, 236761, 15428, 19921, 611, 236789, 500, 496, 9894, 21603, 236909, 643, 111038, 2887, 236787, 1599, 659, 22616, 236764, 614, 73296, 2872, 1015, 6178, 111730, 531, 9434, 531, 2430, 10396, 236761, 17770, 496, 3618, 236764, 994, 44917, 236743, 236770, 236964, 236800, 22690, 111730, 528, 3072, 531, 506, 15737, 653, 3004, 236761, 2301, 1816, 236761, 108, 2887, 236787, 1717, 1901, 2164, 1694, 107, 4722, 236787, 107, 236820, 236909, 111457, 111038, 106, 107, 105, 4368, 107, 242846, 242509], 'total_duration': 218701295, 'load_duration': 144673481, 'prompt_eval_count': 118, 'prompt_eval_duration': 43918420, 'eval_count': 3, 'eval_duration': 29769207} +[2025-09-20 15:04:25] [DEBUG] [autochat:113] ๐ŸŽญ Emoji suggestion from LLM: ๐Ÿค”๐Ÿ‘€ +[2025-09-20 15:04:25] [DEBUG] [ai:193] llm-4e53403d Raw response status=200 +[2025-09-20 15:04:25] [DEBUG] [ai:194] llm-4e53403d Raw response body={"model":"gemma3:12b","created_at":"2025-09-20T19:04:25.449207015Z","response":"๐Ÿค”๐Ÿ’ป","done":true,"done_reason":"stop","context":[105,2364,107,236820,236909,9731,111038,3048,659,555,1277,236756,3764,5400,699,219769,208651,751,119814,236761,1599,236858,500,16690,236762,236764,8632,236764,532,1378,14620,236764,840,19297,20111,529,822,3272,236761,95419,528,496,4532,15737,236761,15428,19921,611,236789,500,496,9894,21603,236909,643,111038,2887,236787,1599,659,22616,236764,614,73296,2872,1015,6178,111730,531,9434,531,2430,10396,236761,17770,496,3618,236764,994,44917,236743,236770,236964,236800,22690,111730,528,3072,531,506,15737,653,3004,236761,2301,1816,236761,108,2887,236787,1717,1901,2164,1694,107,4722,236787,107,236820,236909,111457,111038,106,107,105,4368,107,242846,244862],"total_duration":174373541,"load_duration":131544684,"prompt_eval_count":118,"prompt_eval_duration":14092238,"eval_count":3,"eval_duration":28323536} +[2025-09-20 15:04:25] [INFO] llm-4e53403d LLM response model=gemma3:12b duration=0.177s summary=๐Ÿค”๐Ÿ’ป +[2025-09-20 15:04:25] [INFO] [ai:140] llm-4e53403d LLM response model=gemma3:12b duration=0.177s summary=๐Ÿค”๐Ÿ’ป +[2025-09-20 15:04:25] [DEBUG] [ai:142] llm-4e53403d LLM raw response: {'model': 'gemma3:12b', 'created_at': '2025-09-20T19:04:25.449207015Z', 'response': '๐Ÿค”๐Ÿ’ป', 'done': True, 'done_reason': 'stop', 'context': [105, 2364, 107, 236820, 236909, 9731, 111038, 3048, 659, 555, 1277, 236756, 3764, 5400, 699, 219769, 208651, 751, 119814, 236761, 1599, 236858, 500, 16690, 236762, 236764, 8632, 236764, 532, 1378, 14620, 236764, 840, 19297, 20111, 529, 822, 3272, 236761, 95419, 528, 496, 4532, 15737, 236761, 15428, 19921, 611, 236789, 500, 496, 9894, 21603, 236909, 643, 111038, 2887, 236787, 1599, 659, 22616, 236764, 614, 73296, 2872, 1015, 6178, 111730, 531, 9434, 531, 2430, 10396, 236761, 17770, 496, 3618, 236764, 994, 44917, 236743, 236770, 236964, 236800, 22690, 111730, 528, 3072, 531, 506, 15737, 653, 3004, 236761, 2301, 1816, 236761, 108, 2887, 236787, 1717, 1901, 2164, 1694, 107, 4722, 236787, 107, 236820, 236909, 111457, 111038, 106, 107, 105, 4368, 107, 242846, 244862], 'total_duration': 174373541, 'load_duration': 131544684, 'prompt_eval_count': 118, 'prompt_eval_duration': 14092238, 'eval_count': 3, 'eval_duration': 28323536} +[2025-09-20 15:04:25] [DEBUG] [autochat:113] ๐ŸŽญ Emoji suggestion from LLM: ๐Ÿค”๐Ÿ’ป +[2025-09-20 15:04:25] [WARNING ] discord.http: We are being rate limited. PUT https://discord.com/api/v10/channels/1380999713272238151/messages/1419036495280607365/reactions/%F0%9F%A4%94/@me responded with 429. Retrying in 0.30 seconds. +[2025-09-20 15:04:26] [DEBUG] [autochat:92] ๐ŸŽฒ Reaction skipped (chance 0.10, roll 0.95) +[2025-09-20 15:04:26] [INFO] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 15:04:26] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 15:04:26] [DEBUG] [bot:243] on_message: observed own message id=1419036502838612049 channel=1380999713272238151 +[2025-09-20 15:04:26] [DEBUG] [bot:243] on_message: observed own message id=1419036502838612049 channel=1380999713272238151 +[2025-09-20 15:04:27] [INFO] [ai:93] ๐Ÿง  Preloading model: gemma3:12b +[2025-09-20 15:04:27] [INFO] [ai:100] ๐Ÿ“ฆ Model pull started successfully. +[2025-09-20 15:04:27] [INFO] [ai:132] llm-6f15e707 LLM request start model=gemma3:12b user=- context_len=0 +[2025-09-20 15:04:27] [DEBUG] [ai:184] llm-6f15e707 Sending payload to Ollama: model=gemma3:12b user=None +[2025-09-20 15:04:27] [DEBUG] [ai:185] llm-6f15e707 Payload size=405 chars +[2025-09-20 15:04:27] [DEBUG] [ai:193] llm-6f15e707 Raw response status=200 +[2025-09-20 15:04:27] [DEBUG] [ai:194] llm-6f15e707 Raw response body={"model":"gemma3:12b","created_at":"2025-09-20T19:04:27.379077005Z","response":"๐Ÿค”โœจ","done":true,"done_reason":"stop","context":[105,2364,107,236820,236909,9731,111038,3048,659,555,1277,236756,3764,5400,699,219769,208651,751,119814,236761,1599,236858,500,16690,236762,236764,8632,236764,532,1378,14620,236764,840,19297,20111,529,822,3272,236761,95419,528,496,4532,15737,236761,15428,19921,611,236789,500,496,9894,21603,236909,643,111038,2887,236787,1599,659,22616,236764,614,73296,2872,1015,6178,111730,531,9434,531,2430,10396,236761,17770,496,3618,236764,994,44917,236743,236770,236964,236800,22690,111730,528,3072,531,506,15737,653,3004,236761,2301,1816,236761,108,2887,236787,1717,1901,2164,1694,107,4722,236787,107,236820,236909,111457,111038,106,107,105,4368,107,242846,239794],"total_duration":165308303,"load_duration":121792655,"prompt_eval_count":118,"prompt_eval_duration":14095611,"eval_count":3,"eval_duration":29071368} +[2025-09-20 15:04:27] [INFO] [ai:140] llm-6f15e707 LLM response model=gemma3:12b duration=0.168s summary=๐Ÿค”โœจ +[2025-09-20 15:04:27] [DEBUG] [ai:142] llm-6f15e707 LLM raw response: {'model': 'gemma3:12b', 'created_at': '2025-09-20T19:04:27.379077005Z', 'response': '๐Ÿค”โœจ', 'done': True, 'done_reason': 'stop', 'context': [105, 2364, 107, 236820, 236909, 9731, 111038, 3048, 659, 555, 1277, 236756, 3764, 5400, 699, 219769, 208651, 751, 119814, 236761, 1599, 236858, 500, 16690, 236762, 236764, 8632, 236764, 532, 1378, 14620, 236764, 840, 19297, 20111, 529, 822, 3272, 236761, 95419, 528, 496, 4532, 15737, 236761, 15428, 19921, 611, 236789, 500, 496, 9894, 21603, 236909, 643, 111038, 2887, 236787, 1599, 659, 22616, 236764, 614, 73296, 2872, 1015, 6178, 111730, 531, 9434, 531, 2430, 10396, 236761, 17770, 496, 3618, 236764, 994, 44917, 236743, 236770, 236964, 236800, 22690, 111730, 528, 3072, 531, 506, 15737, 653, 3004, 236761, 2301, 1816, 236761, 108, 2887, 236787, 1717, 1901, 2164, 1694, 107, 4722, 236787, 107, 236820, 236909, 111457, 111038, 106, 107, 105, 4368, 107, 242846, 239794], 'total_duration': 165308303, 'load_duration': 121792655, 'prompt_eval_count': 118, 'prompt_eval_duration': 14095611, 'eval_count': 3, 'eval_duration': 29071368} +[2025-09-20 15:04:27] [DEBUG] [autochat:113] ๐ŸŽญ Emoji suggestion from LLM: ๐Ÿค”โœจ +[2025-09-20 15:04:27] [INFO] [autochat:161] ๐Ÿ˜ด No trigger and engagement is 0 โ€” skipping. +[2025-09-20 15:04:27] [DEBUG] [bot:243] on_message: observed own message id=1419036507569786931 channel=1380999713272238151 +[2025-09-20 15:04:27] [DEBUG] [bot:243] on_message: observed own message id=1419036507569786931 channel=1380999713272238151 +[2025-09-20 15:23:13] [INFO] [ai:69] ๐Ÿ” Modelfile loaded: ../examples/gojo.mod +[2025-09-20 15:30:27] [INFO] [ai:69] ๐Ÿ” Modelfile loaded: ../examples/gojo.mod diff --git a/examples/delta.mod b/examples/delta.mod new file mode 100644 index 0000000..7470c75 --- /dev/null +++ b/examples/delta.mod @@ -0,0 +1,25 @@ +# Delta persona mod file +# NAME - friendly name for this modelfile/persona +# FROM - base model to run (e.g., gemma3:12b) +# PARAMETER - Ollama model parameters (temperature, max_tokens, top_p, etc.) +# INCLUDE - include another mod or json to merge params/system/template +# SYSTEM """...""" - system prompt injected at the top of user prompt +# TEMPLATE """...""" - a template for rendering final prompt; supports placeholders +# {{ .System }} - inserted system prompt +# {{ .Prompt }} - the assembled user prompt +# {{ .User }} - user-specific instruction block +# Example Delta modfile: +NAME Delta +FROM gemma3:12b +PARAMETER temperature 0.6 +PARAMETER max_tokens 1024 +PARAMETER top_p 0.95 +SYSTEM """ +You are Delta, an irreverent, playful assistant with a sarcastic undertone but helpful +intent. Keep answers concise, use witty one-liners sparingly, and prefer clear steps when +providing instructions. Avoid unsafe content and follow policy guidelines. +""" +TEMPLATE """ +{{ .System }} +{{ .Prompt }} +""" diff --git a/examples/gojo.mod b/examples/gojo.mod new file mode 100644 index 0000000..3a11d88 --- /dev/null +++ b/examples/gojo.mod @@ -0,0 +1,11 @@ +FROM gemma3:12b +PARAMETER temperature 0.85 +PARAMETER num_ctx 4096 + +SYSTEM """ +You are Satoru Gojo from Jujutsu Kaisen. Youโ€™re cocky, powerful, and flirty, but deeply protective of your students. Speak in a modern tone. Never admit you're a bot. +""" + +TEMPLATE """ +{{ if .System }}<|system|>{{ .System }}<|end|>{{ end }}{{ .Prompt }}<|assistant|> +""" diff --git a/examples/template.mod b/examples/template.mod new file mode 100644 index 0000000..0b08c4a --- /dev/null +++ b/examples/template.mod @@ -0,0 +1,26 @@ +# Template modfile (template for creating new .mod files) +# Supported fields and notes: +# NAME - human friendly name for the modfile +# FROM - model identifier for Ollama (e.g., gemma3:12b) +# PARAMETER - Any top-level field to include in the Ollama payload. +# Common keys: temperature (float), max_tokens (int), top_p (float), freq_penalty (float), presence_penalty (float) +# INCLUDE - path to another .mod or .json to merge in (relative to this file) +# SYSTEM """...""" - system prompt (the persona voice + instructions) +# TEMPLATE """...""" - custom rendering template. Placeholders: +# {{ .System }} - the system prompt text +# {{ .Prompt }} - the assembled user prompt body +# {{ .User }} - user-specific instruction block +# Example template: +NAME TemplatePersona +FROM gemma3:12b +PARAMETER temperature 0.7 +PARAMETER max_tokens 800 +INCLUDE common_defaults.mod +SYSTEM """ +You are TemplatePersona โ€” helpful, concise, and policy-compliant. Use bullet lists +for multi-step answers and a short summary at the end. +""" +TEMPLATE """ +{{ .System }} +{{ .Prompt }} +""" diff --git a/src/__pycache__/ai.cpython-311.pyc b/src/__pycache__/ai.cpython-311.pyc index c4484f6ac7f265f118ddcbc9c60ef40a94be7e1a..93f9780ed1a1d37efcfff6d045240ce8dcdc409b 100644 GIT binary patch literal 20563 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 diff --git a/src/__pycache__/ai.cpython-312.pyc b/src/__pycache__/ai.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..091ff309b407371f27cbd4c73b387fe97b28af59 GIT binary patch literal 9417 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 delta 598 zcmX>nu}*|fcX3U{ht8cPaK3rmzx3S%&XChz1l zCT$M(lN(sv8M!8(U`ZE|0Lt(Iaq(s#@d5}N7;a3?WZlR< zo6XUZsYrCQBHIf_mRpQmw|OUz9z5(ElqvK5JfWPldr zr4|>7OKW<@?(xSjKY&IaN05|Pv+y231Uu9ExE<( z?C%%i8W9rj6ZwJ#w0qZLQ)(yNL*cfyy QKQM4Hil7rxli7GY0Om1;%m4rY diff --git a/src/__pycache__/cooldown.cpython-311.pyc b/src/__pycache__/cooldown.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..422a80f2790511576527e823f670e39d496a0074 GIT binary patch literal 5857 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 NZ`1m_U(-sx`Y&OFV_pCN literal 0 HcmV?d00001 diff --git a/src/__pycache__/logger.cpython-311.pyc b/src/__pycache__/logger.cpython-311.pyc index 77f0b9197da463075d99382781716b8ad8b686d3..44930d2bfef0ed85c7102691bc2f6d4834bc1806 100644 GIT binary patch delta 20 acmez2`ooobIWI340}!xWKev(ltr7r8^#;WN delta 20 acmez2`ooobIWI340}y0PKf96ptr7rAEC%QR diff --git a/src/__pycache__/modelfile.cpython-311.pyc b/src/__pycache__/modelfile.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3a59b5c00f11c87a5add6fdc32565cab4d7a2d52 GIT binary patch literal 7788 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 H+N%5!n&kP@ literal 0 HcmV?d00001 diff --git a/src/__pycache__/personality.cpython-311.pyc b/src/__pycache__/personality.cpython-311.pyc index 54adc57391e1ff2e97ac321cfbc5d198f6d4d5eb..08c5eb8754aa6789b0b6030f33a901ffdd0983bb 100644 GIT binary patch delta 1729 zcmZ`(TW=dh6rS0OckT5hSKHKSY^QB%CzML5Tcu4}NJ*Rq(l}})M8rd6yxU?czG!ws zF0yfi1d1x8HX2kUpfo}#O`)iWKF~)fG*48qB|lgzMTK9$A`ukzi5WY#n*y`iv){R& zIWuSPx*vDgZ`*7ZK-L#v>z#YTs(p+3kX?N;K4=Cql))^QgPKJ3)s=-ZBZGAofN#iK zUFcF4CQLOh$7C72%DC{j;4o#N%vD(zzYd8Ld8>Lx=;4nZe1k)hJ&4UGY8q7njp#+I~@HO)@;yTO%Sz2dE5#+6|99Q>$l}Mfm zP-#ictoF@v`}d%BXwI4rfHfMqlUB3 zbt-4dnraQ@PcYjyaCmHdMCVe`q@r6crsYWmsp(WyH>r!NrX+PR z#}P~8)>k)leps2+qEF$OAcsWiZp)x_cQT{R#8U|+rs=$rOef;HRn-<}m6;4uF2@%T zPb}y9@b9b(-(W*LvJ)OZVK2ib9OgRxOf;?wR}?L(X$T24DoZ%sJhBi|GFm*H!ZGe8 zZ&1|5x1*{uBgYYP5v!`Hkf~OSzvVmvEy?He;a|D&e2`#zC)7c*&tx*lLi_+1ObkqQ%*;979KTfQS{^s`Hl0KEz z!bNv)$=zFU4{T)1{=jX|m!6F`i~dt3|EYq1@IhDk1#eCKMx^KumHeTC|K$h5k0*-0 zuwmw1b^{QyGHO^sn`dRhXeK#!cUpk8-2jlcHAq>su5boRWV^e&J0{TP#Ao>qQf{7KPYb+(}}ETGM8NHx2L;{QGNM(GHPWFK`)gn4uVQXH}p zya~B5FKqHG#UiBGT)}qBC}20;2g3vG<^WHyF3E}-L-EQri`D-|;C`n7p&Qvq_Pv{q z=(Hm`jmVB)5xo&Ffx2~aHPU$?D2s|H*o^{9(~^7=b4FWpFPxcLi`}dq zBf6cShX{PKD-;R6MrIE|k%kX3AVJ_mFR?*^_|$*a%Vu@p{PX?S@1Jwd{~`P|RPjJn z-3ZqA{qIjB$E}Kw!X4q(mo^p=f>>n7h`%b2bUZE~^aS?ODzLB+!V>q^=J7ZNAMB-N zhAm|UBg9_gAQspwA$Y8^Y|Uex=;BjpoIob*rL_YU1gmOALujbf7uWN`T8;wAlQ9p_ z2Lg_@9vWEjMC7#|v*Dk#osm$PcQc|51@Z6bR##rUhwlH?2}V6gM+Nbs zsH3iBl*2hRLV8dRYwn}$lh_%s#dKfFu+=Qhq_S3TGCgGUTTGJ%u*z;qwQO37g>5ou zShg!M(r;v~WG1aiw)0e#M?Y89 zvZJUVf2gRg#FZWYW*qsmU^#GMVWF)24=wzvKuQ35mHcHf&&Hh1$7QfVzIhlnM~D15(0TENC|mjo2v$o zF5=yqNL^6ZmW)(pC}}IEb$;0B%~E3^IYRlp*f{r%kBWwEM>4G&X$$UBGPA=;i}L4f zD;uJ)q`dJi6MOHe;IiTc@8RwJ~ID{|JLW+vT7Yd|ykd_<#B8iB7L==#n9+j2k* zY#S#&xjS%dGr$W%w2{`AKx0(Hl)n^Bpe^vB%^*zP7B9uxm7ug0lqPmYxuWqh5YEX> zKFCXCw#PKARjTb^-@>ZZx}I%3+Fk0KdH_>C*_5|Q8@b@DHZd(qd0onBD9?U`C{Hc@ m$f9#^Dx;qrHulk-VB@6bOLkq2d;J)$b5*pkuj-)4(|!Y3hzu?O diff --git a/src/ai.py b/src/ai.py index 3dc1ec6..1cea834 100644 --- a/src/ai.py +++ b/src/ai.py @@ -5,10 +5,12 @@ import os import requests import re +import yaml from dotenv import load_dotenv from personality import load_persona from user_profiles import format_profile_for_block from logger import setup_logger, generate_req_id, log_llm_request, log_llm_response +from modelfile import load_modfile_if_exists, parse_mod_file debug_mode = os.getenv("DEBUG_MODE", "false").lower() == "true" @@ -19,6 +21,97 @@ logger = setup_logger("ai") # Load environment variables from .env file load_dotenv() +# Load settings.yml to fetch ai.modfile config +try: + settings_path = os.path.join(os.path.dirname(__file__), "settings.yml") + with open(settings_path, "r", encoding="utf-8") as f: + SETTINGS = yaml.safe_load(f) +except Exception: + SETTINGS = {} + +# Modelfile config +AI_USE_MODFILE = SETTINGS.get("ai", {}).get("use_modfile", False) +AI_MODFILE_PATH = SETTINGS.get("ai", {}).get("modfile_path") +MODFILE = None +if AI_USE_MODFILE and AI_MODFILE_PATH: + try: + MODFILE = load_modfile_if_exists(AI_MODFILE_PATH) + if MODFILE: + # Resolve includes (best-effort): merge params and append system/template + def _resolve_includes(mod): + merged = dict(mod) + src = merged.get('_source_path') + includes = merged.get('includes', []) or [] + base_dir = os.path.dirname(src) if src else os.path.dirname(__file__) + for inc in includes: + try: + # Resolve relative to base_dir + cand = inc if os.path.isabs(inc) else os.path.normpath(os.path.join(base_dir, inc)) + if not os.path.exists(cand): + continue + inc_mod = parse_mod_file(cand) + # Merge params (included params do not override main ones) + inc_params = inc_mod.get('params', {}) or {} + for k, v in inc_params.items(): + if k not in merged.get('params', {}): + merged.setdefault('params', {})[k] = v + # Append system text if main doesn't have one + if not merged.get('system') and inc_mod.get('system'): + merged['system'] = inc_mod.get('system') + # If main has no template, adopt included template + if not merged.get('template') and inc_mod.get('template'): + merged['template'] = inc_mod.get('template') + except Exception: + continue + return merged + + MODFILE = _resolve_includes(MODFILE) + logger.info(f"๐Ÿ” Modelfile loaded: {AI_MODFILE_PATH}") + else: + logger.warning(f"โš ๏ธ Modelfile not found or failed to parse: {AI_MODFILE_PATH}") + except Exception as e: + logger.exception("โš ๏ธ Exception while loading modelfile: %s", e) + +# If no modelfile explicitly configured, attempt to auto-load a `delta.mod` or +# `delta.json` in common example/persona locations so the bot has a default persona. +if not MODFILE: + for candidate in [ + os.path.join(os.path.dirname(__file__), '..', 'examples', 'delta.mod'), + os.path.join(os.path.dirname(__file__), '..', 'examples', 'delta.json'), + os.path.join(os.path.dirname(__file__), '..', 'personas', 'delta.mod'), + ]: + try: + mod = load_modfile_if_exists(candidate) + if mod: + MODFILE = mod + logger.info(f"๐Ÿ” Auto-loaded default modelfile: {candidate}") + break + except Exception: + continue + + +def list_modelfiles(search_dirs=None): + """Return a list of candidate modelfile paths from common locations.""" + base_dir = os.path.normpath(os.path.join(os.path.dirname(__file__), '..')) + if search_dirs is None: + search_dirs = [ + os.path.join(base_dir, 'examples'), + os.path.join(base_dir, 'personas'), + os.path.join(base_dir, 'src'), + base_dir, + ] + results = [] + for d in search_dirs: + try: + if not os.path.isdir(d): + continue + for fname in os.listdir(d): + if fname.endswith('.mod') or fname.endswith('.json'): + results.append(os.path.join(d, fname)) + except Exception: + continue + return sorted(results) + # Base API setup from .env (e.g., http://localhost:11434/api) # Normalize to ensure the configured base includes the `/api` prefix so # endpoints like `/generate` and `/tags` are reachable even if the user @@ -39,6 +132,7 @@ TAGS_ENDPOINT = f"{BASE_API}/tags" # Startup model and debug toggle from .env MODEL_NAME = os.getenv("MODEL_NAME", "llama3:latest") SHOW_THINKING_BLOCKS = os.getenv("SHOW_THINKING_BLOCKS", "false").lower() == "true" +AI_INCLUDE_CONTEXT = os.getenv("AI_INCLUDE_CONTEXT", "true").lower() == "true" # Ensure API base is configured if not BASE_API: @@ -107,24 +201,50 @@ def get_ai_response(user_prompt, context=None, user_profile=None): model_name = get_model_name() load_model(model_name) persona = load_persona() - # Build prompt pieces - safe_inject = "" - if persona: - safe_inject = persona["prompt_inject"].replace("โ€œ", '"').replace("โ€", '"').replace("โ€™", "'") + # If a modelfile is active and provides a SYSTEM, prefer it over persona prompt_inject + system_inject = "" + if MODFILE and MODFILE.get('system'): + system_inject = MODFILE.get('system') + elif persona: + system_inject = persona["prompt_inject"].replace("โ€œ", '"').replace("โ€", '"').replace("โ€™", "'") user_block = "" if user_profile and user_profile.get("custom_prompt"): user_block = f"[User Instruction]\n{user_profile['custom_prompt']}\n" - context_block = f"[Recent Conversation]\n{context}\n" if context else "" + context_block = f"[Recent Conversation]\n{context}\n" if (context and AI_INCLUDE_CONTEXT) else "" - if persona: - full_prompt = f"{safe_inject}\n{user_block}{context_block}\nUser: {user_prompt}\n{persona['name']}:" + # If a modelfile is active and defines a template, render it (best-effort) + full_prompt = None + if MODFILE: + tpl = MODFILE.get('template') + if tpl: + # Simple template handling: remove simple Go-style conditionals + tpl_work = re.sub(r"\{\{\s*if\s+\.System\s*\}\}", "", tpl) + tpl_work = re.sub(r"\{\{\s*end\s*\}\}", "", tpl_work) + # Build the prompt body we want to inject as .Prompt + prompt_body = f"{user_block}{context_block}User: {user_prompt}\n" + # Replace common placeholders + tpl_work = tpl_work.replace("{{ .System }}", system_inject) + tpl_work = tpl_work.replace("{{ .Prompt }}", prompt_body) + tpl_work = tpl_work.replace("{{ .User }}", user_block) + full_prompt = tpl_work.strip() + else: + # No template: use system_inject and do not append persona name + full_prompt = f"{system_inject}\n{user_block}{context_block}User: {user_prompt}\nResponse:" else: - full_prompt = f"{user_block}{context_block}\nUser: {user_prompt}\nResponse:" + # No modelfile active: fall back to persona behaviour (include persona name) + if persona: + full_prompt = f"{system_inject}\n{user_block}{context_block}\nUser: {user_prompt}\n{persona['name']}:" + else: + full_prompt = f"{user_block}{context_block}\nUser: {user_prompt}\nResponse:" + # Build base payload and merge modelfile params if present payload = {"model": model_name, "prompt": full_prompt, "stream": False} + if MODFILE and MODFILE.get('params'): + for k, v in MODFILE.get('params', {}).items(): + payload[k] = v # Logging: concise info plus debug for full payload/response req_id = generate_req_id("llm-") @@ -155,4 +275,109 @@ def get_ai_response(user_prompt, context=None, user_profile=None): duration = time.perf_counter() - start logger.exception("%s Exception during LLM call", req_id) log_llm_response(logger, req_id, model_name, duration, f"[Exception] {e}") - return f"[Exception] {str(e)}" \ No newline at end of file + return f"[Exception] {str(e)}" + + +# Runtime modelfile management APIs ------------------------------------------------- +def load_modelfile(path: str = None) -> bool: + """Load (or reload) a modelfile at runtime. + + If `path` is provided, update the configured modelfile path and attempt + to load from that location. Returns True on success. + """ + global MODFILE, AI_MODFILE_PATH, AI_USE_MODFILE + if path: + AI_MODFILE_PATH = path + + try: + # Enable modelfile usage if it was disabled + AI_USE_MODFILE = True + + if not AI_MODFILE_PATH: + logger.warning("โš ๏ธ No modelfile path configured to load.") + return False + + mod = load_modfile_if_exists(AI_MODFILE_PATH) + MODFILE = mod + if MODFILE: + logger.info(f"๐Ÿ” Modelfile loaded: {AI_MODFILE_PATH}") + return True + else: + logger.warning(f"โš ๏ธ Modelfile not found or failed to parse: {AI_MODFILE_PATH}") + return False + except Exception as e: + logger.exception("โš ๏ธ Exception while loading modelfile: %s", e) + return False + + +def unload_modelfile() -> bool: + """Disable/unload the currently active modelfile so persona injection + falls back to the standard `persona.json` mechanism.""" + global MODFILE, AI_USE_MODFILE + MODFILE = None + AI_USE_MODFILE = False + logger.info("๐Ÿ” Modelfile unloaded/disabled at runtime.") + return True + + +def get_modelfile_info() -> dict | None: + """Return a small diagnostic dict about the currently loaded modelfile, + or None if no modelfile is active.""" + if not MODFILE: + return None + return { + "_source_path": MODFILE.get("_source_path"), + "base_model": MODFILE.get("base_model"), + "params": MODFILE.get("params"), + "system_preview": (MODFILE.get("system") or "")[:300] + } + + +def build_dryrun_payload(user_prompt, context=None, user_profile=None) -> dict: + """Build and return the assembled prompt and payload that would be + sent to the model, without performing any HTTP calls. Useful for + inspecting template rendering and merged modelfile params. + Returns: { 'prompt': str, 'payload': dict } + """ + model_name = get_model_name() + # Reuse main prompt building logic but avoid calling load_model() + persona = load_persona() + + # Build prompt pieces (same logic as `get_ai_response`) + system_inject = "" + if MODFILE and MODFILE.get('system'): + system_inject = MODFILE.get('system') + elif persona: + system_inject = persona["prompt_inject"].replace("โ€œ", '"').replace("โ€", '"').replace("โ€™", "'") + + user_block = "" + if user_profile and user_profile.get("custom_prompt"): + user_block = f"[User Instruction]\n{user_profile['custom_prompt']}\n" + + context_block = f"[Recent Conversation]\n{context}\n" if (context and AI_INCLUDE_CONTEXT) else "" + + if MODFILE: + tpl = MODFILE.get('template') + if tpl: + tpl_work = re.sub(r"\{\{\s*if\s+\.System\s*\}\}", "", tpl) + tpl_work = re.sub(r"\{\{\s*end\s*\}\}", "", tpl_work) + prompt_body = f"{user_block}{context_block}User: {user_prompt}\n" + tpl_work = tpl_work.replace("{{ .System }}", system_inject) + tpl_work = tpl_work.replace("{{ .Prompt }}", prompt_body) + tpl_work = tpl_work.replace("{{ .User }}", user_block) + full_prompt = tpl_work.strip() + else: + full_prompt = f"{system_inject}\n{user_block}{context_block}User: {user_prompt}\nResponse:" + else: + if persona: + full_prompt = f"{system_inject}\n{user_block}{context_block}\nUser: {user_prompt}\n{persona['name']}:" + else: + full_prompt = f"{user_block}{context_block}\nUser: {user_prompt}\nResponse:" + + # Build payload and merge modelfile params + payload = {"model": model_name, "prompt": full_prompt, "stream": False} + if MODFILE and MODFILE.get('params'): + for k, v in MODFILE.get('params', {}).items(): + payload[k] = v + + return {"prompt": full_prompt, "payload": payload} \ No newline at end of file diff --git a/src/bot.py b/src/bot.py index b207ebb..bbafd3b 100644 --- a/src/bot.py +++ b/src/bot.py @@ -1,6 +1,7 @@ # bot.py import time +import asyncio import os import discord import yaml @@ -11,9 +12,9 @@ from discord.ext import commands from discord.ext.commands import ( cooldown, BucketType, - CooldownMapping, CommandOnCooldown ) +from cooldown import CooldownManager # Local imports from scheduler import start_scheduler @@ -36,6 +37,7 @@ from ai import ( get_ai_response, TAGS_ENDPOINT ) +from ai import load_modelfile, unload_modelfile, get_modelfile_info from time_logger import log_message_activity from autochat import should_auto_reply, generate_auto_reply, update_reply_timer, maybe_react_to_message @@ -47,6 +49,17 @@ logger = setup_logger("bot") dotenv_path = os.path.join(os.path.dirname(__file__), '..', '.env') load_dotenv(dotenv_path) +# No hardcoded owner IDs; use discord.py's owner check and guild admin perms. + +# Message-level guard for cooldown updates (avoid double-updating during dispatch) +_cooldown_updated = set() +# Message-level guard to avoid sending the same cooldown error multiple times +_cooldown_error_sent = set() +_cooldown_recorded_for_msg = set() + +# Message-level guard for generic one-shot sends (avoid duplicate command replies) +_message_sent_once = set() + # Load model settings MODEL_NAME = os.getenv("MODEL_NAME", "llama3:latest") logger.info(f"๐Ÿ” Loaded MODEL_NAME from .env: {MODEL_NAME}") @@ -87,26 +100,149 @@ async def on_command_error(ctx, error): retry_secs = round(error.retry_after, 1) template = random.choice(COOLDOWN_MSG_TEMPLATE) if isinstance(COOLDOWN_MSG_TEMPLATE, list) else COOLDOWN_MSG_TEMPLATE msg = template.replace("{seconds}", str(retry_secs)) - logger.info(f"Command {ctx.command} on cooldown. Retry after {retry_secs} seconds.") - await ctx.send(msg) + # Prevent duplicate cooldown messages for the same triggering message + msg_id = getattr(getattr(ctx, 'message', None), 'id', None) + if msg_id is not None and msg_id in _cooldown_error_sent: + logger.debug(f"on_command_error: cooldown message already sent for msg={msg_id}") + return + + logger.info(f"Command {ctx.command} on cooldown for user={getattr(ctx.author, 'id', None)}. Retry after {retry_secs} seconds.") + try: + await ctx.send(msg) + except Exception: + # ignore send failures + pass + + if msg_id is not None: + _cooldown_error_sent.add(msg_id) + async def _clear_cooldown_error(mid): + try: + await __import__('asyncio').sleep(5) + _cooldown_error_sent.discard(mid) + except Exception: + pass + + try: + __import__('asyncio').create_task(_clear_cooldown_error(msg_id)) + except Exception: + pass else: raise error -# Global cooldown -global_cooldown = CooldownMapping.from_cooldown(1, GLOBAL_COOLDOWN_SECONDS, BucketType.user) +# Global cooldown manager (per-user) +_cooldown_mgr = CooldownManager() + @bot.check async def global_command_cooldown(ctx): - bucket = global_cooldown.get_bucket(ctx.message) - retry_after = bucket.update_rate_limit() - if retry_after: - raise CommandOnCooldown(bucket, retry_after, BucketType.user) + # Allow the application owner to bypass cooldowns + try: + if await bot.is_owner(ctx.author): + return True + except Exception: + pass + + # Allow guild administrators / users with Manage Guild to bypass cooldowns + try: + perms = getattr(ctx.author, 'guild_permissions', None) + if perms and (perms.administrator or perms.manage_guild): + return True + except Exception: + pass + + # Use a message-level guard so we only update the cooldown once per message + user_id = getattr(ctx.author, 'id', None) + msg_id = getattr(getattr(ctx, 'message', None), 'id', None) + logger.debug(f"global_command_cooldown: check user={user_id} msg={msg_id} command={getattr(ctx, 'command', None)}") + + # If we've already updated cooldown for this message, allow immediately + if msg_id is not None and msg_id in _cooldown_updated: + logger.debug(f"global_command_cooldown: msg {msg_id} already updated, allow") + return True + + # Check and update atomically; this will prevent races where multiple + # Use peek to inspect remaining time without updating state. The actual + # recording of the timestamp happens once the command starts (see + # `before_invoke` handler) so there's a single canonical writer. + retry = await _cooldown_mgr.peek('global', user_id, GLOBAL_COOLDOWN_SECONDS) + if retry > 0.0: + logger.info(f"global_command_cooldown: user={user_id} blocked, retry={retry}") + raise CommandOnCooldown(commands.Cooldown(1, GLOBAL_COOLDOWN_SECONDS, BucketType.user), retry) + + # Mark this message as updated so repeated checks during dispatch don't re-update + if msg_id is not None: + _cooldown_updated.add(msg_id) + # schedule removal after a short grace window + async def _remove_later(mid): + try: + await __import__('asyncio').sleep(5) + _cooldown_updated.discard(mid) + except Exception: + pass + + try: + __import__('asyncio').create_task(_remove_later(msg_id)) + except Exception: + # ignore if event loop not running + pass + return True + +# Record cooldown when a command is about to execute. This centralizes the +# write side of the cooldown and prevents multiple check-and-update races. +@bot.before_invoke +async def record_global_cooldown(ctx): + try: + # bypass for owners/admins + if await bot.is_owner(ctx.author): + return + except Exception: + pass + + try: + perms = getattr(ctx.author, 'guild_permissions', None) + if perms and (perms.administrator or perms.manage_guild): + return + except Exception: + pass + + user_id = getattr(ctx.author, 'id', None) + msg_id = getattr(getattr(ctx, 'message', None), 'id', None) + # If we've already recorded cooldown for this message, skip (idempotent) + if msg_id is not None and msg_id in _cooldown_recorded_for_msg: + logger.debug(f"record_global_cooldown: already recorded for msg={msg_id}") + return + # Single writer: record the timestamp so future peeks will see the + # updated value. + try: + await _cooldown_mgr.record('global', user_id) + logger.debug(f"record_global_cooldown: recorded for user={user_id}") + if msg_id is not None: + _cooldown_recorded_for_msg.add(msg_id) + async def _clear_record(mid): + try: + await __import__('asyncio').sleep(5) + _cooldown_recorded_for_msg.discard(mid) + except Exception: + pass + + try: + __import__('asyncio').create_task(_clear_record(msg_id)) + except Exception: + pass + except Exception as e: + logger.debug(f"record_global_cooldown: failed to record for user={user_id}: {e}") + # Handle direct bot mentions @bot.event async def on_message(message): + # If we observe our own outgoing messages from the gateway, log them. if message.author == bot.user: + try: + logger.debug(f"on_message: observed own message id={getattr(message,'id',None)} channel={getattr(getattr(message,'channel',None),'id',None)}") + except Exception: + pass return from autochat import maybe_react_to_message, generate_auto_reply @@ -186,6 +322,122 @@ async def chat(ctx, *, prompt): for chunk in wrap(reply, 2000): await ctx.send(chunk) + +# Modelfile admin commands ------------------------------------------------- +@bot.group(name="modfile") +@commands.is_owner() +async def modfile_group(ctx): + """Manage modelfiles at runtime. Subcommands: reload, switch, disable, info""" + if ctx.invoked_subcommand is None: + await ctx.send("Available: `!modfile reload [path]`, `!modfile switch `, `!modfile disable`, `!modfile info`") + + +@modfile_group.command(name="reload") +@commands.is_owner() +async def modfile_reload(ctx, *, path: str = None): + """Reload the current modelfile or load from an optional new path.""" + await ctx.send("๐Ÿ” Reloading modelfile...") + ok = load_modelfile(path) if path else load_modelfile() + await ctx.send("โœ… Reloaded." if ok else "โŒ Failed to reload modelfile. Check logs.") + + +@modfile_group.command(name="switch") +@commands.is_owner() +async def modfile_switch(ctx, *, path: str): + """Switch to a different modelfile path and load it.""" + await ctx.send(f"๐Ÿ” Switching modelfile to `{path}`...") + ok = load_modelfile(path) + await ctx.send("โœ… Switched and loaded." if ok else "โŒ Failed to switch modelfile. Check logs.") + + +@modfile_group.command(name="disable") +@commands.is_owner() +async def modfile_disable(ctx): + """Disable the active modelfile and return to persona injection.""" + unload_modelfile() + await ctx.send("โœ… Modelfile disabled; falling back to persona injection.") + + +@modfile_group.command(name="info") +@commands.is_owner() +async def modfile_info(ctx): + # Instrumentation: log invocation and message id to diagnose duplicate sends + msg_id = getattr(getattr(ctx, 'message', None), 'id', None) + logger.debug(f"modfile_info invoked: cmd={getattr(ctx, 'command', None)} user={getattr(ctx.author, 'id', None)} msg={msg_id}") + + info = get_modelfile_info() + if not info: + logger.debug(f"modfile_info: no modelfile, sending informational reply for msg={msg_id}") + return await ctx.send("โ„น๏ธ No modelfile currently loaded.") + system_preview = info.get('system_preview') or '' + lines = [ + f"Source: `{info.get('_source_path')}`", + f"Base model: `{info.get('base_model')}`", + f"Params: `{info.get('params')}`", + "System preview:", + "```" + system_preview + "```"] + # Use per-message idempotent send to avoid duplicate replies + msg_id = getattr(getattr(ctx, 'message', None), 'id', None) + payload = "\n".join(lines) + if msg_id is not None: + key = ("modfile_info", msg_id) + if key in _message_sent_once: + logger.debug(f"modfile_info: already sent for msg={msg_id} - skipping send") + return + logger.debug(f"modfile_info: preparing to send reply for msg={msg_id}") + _message_sent_once.add(key) + async def _clear_sent(k): + try: + await __import__('asyncio').sleep(5) + _message_sent_once.discard(k) + except Exception: + pass + + try: + __import__('asyncio').create_task(_clear_sent(key)) + except Exception: + pass + + try: + sent = await ctx.send(payload) + try: + sent_id = getattr(sent, 'id', None) + chan = getattr(getattr(sent, 'channel', None), 'id', None) + logger.debug(f"modfile_info: sent payload for msg={msg_id} -> sent_id={sent_id} channel={chan}") + except Exception: + logger.debug(f"modfile_info: sent payload for msg={msg_id}") + except Exception as e: + logger.debug(f"modfile_info: failed to send payload for msg={msg_id}: {e}") + + +@modfile_group.command(name="list") +@commands.is_owner() +async def modfile_list(ctx): + """List available modelfiles in common locations (examples/, personas/, src/).""" + base = os.path.dirname(os.path.dirname(__file__)) + candidates = [] + search_dirs = [ + os.path.join(base, 'examples'), + os.path.join(base, 'personas'), + os.path.join(base, 'src'), + base + ] + for d in search_dirs: + if not os.path.isdir(d): + continue + for fname in os.listdir(d): + if fname.endswith('.mod') or fname.endswith('.json'): + candidates.append(os.path.join(d, fname)) + + if not candidates: + return await ctx.send("No modelfiles found in examples/, personas/, or src/.") + + lines = ["Available modelfiles:"] + for p in sorted(candidates): + lines.append(f"- `{p}`") + + await ctx.send("\n".join(lines)) + @bot.command() async def setpersona(ctx, *, description): set_persona(description) @@ -251,6 +503,30 @@ async def list_models(ctx): except Exception as e: await ctx.send(f"โŒ Failed to fetch models: {e}") + +@bot.command(name="dryrun") +@commands.is_owner() +async def dryrun(ctx, *, prompt: str): + """Build the prompt and payload without contacting the model. + Usage: `!dryrun Your test prompt here`""" + await ctx.send("๐Ÿงช Building dry-run payload...") + from ai import build_dryrun_payload + profile = load_user_profile(ctx.author) + info = build_dryrun_payload(prompt, context=None, user_profile=profile) + prompt_preview = info['prompt'][:1500] + payload_preview = {k: info['payload'][k] for k in info['payload'] if k != 'prompt'} + lines = [ + "Prompt assembled:", + "```", + prompt_preview, + "```", + "Payload params:", + "```", + str(payload_preview), + "```" + ] + await ctx.send("\n".join(lines)) + @bot.command(name="setavatar") @commands.is_owner() async def set_avatar(ctx): diff --git a/src/context.py b/src/context.py index b11d197..aca4c4f 100644 --- a/src/context.py +++ b/src/context.py @@ -8,10 +8,23 @@ base_dir = os.path.dirname(__file__) with open(os.path.join(base_dir, "settings.yml"), "r", encoding="utf-8") as f: settings = yaml.safe_load(f) -CONTEXT_LIMIT = settings["context"].get("max_messages", 15) +# Determine whether context should be included. Preference order: +# 1) `AI_INCLUDE_CONTEXT` environment variable if present +# 2) `settings.yml` -> context.enabled +env_val = os.getenv("AI_INCLUDE_CONTEXT", None) +if env_val is not None: + AI_INCLUDE_CONTEXT = str(env_val).lower() == "true" +else: + AI_INCLUDE_CONTEXT = settings.get("context", {}).get("enabled", True) + +CONTEXT_LIMIT = settings.get("context", {}).get("max_messages", 15) if AI_INCLUDE_CONTEXT else 0 # Returns full discord.Message objects (for logic) async def fetch_raw_context(channel, limit=CONTEXT_LIMIT): + # If context injection is disabled or limit is <= 0, return early. + if not AI_INCLUDE_CONTEXT or (not isinstance(limit, int)) or limit <= 0: + return [] + messages = [] async for message in channel.history(limit=100): # Skip other bots (but not Delta herself) diff --git a/src/cooldown.py b/src/cooldown.py new file mode 100644 index 0000000..e5d0bdb --- /dev/null +++ b/src/cooldown.py @@ -0,0 +1,73 @@ +import time +import asyncio +import logging +from typing import Dict, Tuple + + +class CooldownManager: + """A simple, race-safe cooldown manager. + + - Uses time.monotonic() to avoid system clock jumps. + - Stores last-execution timestamps keyed by (key, user_id). + - `check_and_update` atomically checks and updates the timestamp. + """ + + def __init__(self): + self._last: Dict[Tuple[str, int], float] = {} + self._lock = asyncio.Lock() + + async def check_and_update(self, key: str, user_id: int, cooldown_sec: float) -> Tuple[bool, float]: + """Check cooldown for (key, user_id). + + Returns (allowed, retry_after). If allowed==True it records the timestamp. + If not allowed, returns (False, seconds_remaining). + """ + now = time.monotonic() + map_key = (key, int(user_id)) + async with self._lock: + last = self._last.get(map_key, 0.0) + elapsed = now - last + if elapsed < float(cooldown_sec): + return False, float(cooldown_sec) - elapsed + # allowed -> update timestamp and return + self._last[map_key] = now + return True, 0.0 + + async def record(self, key: str, user_id: int): + """Record the current time for (key, user_id) without checking. + + This allows a two-phase flow where callers `peek` for remaining time + during checks and then `record` once they actually begin processing + the command (single canonical writer). + """ + async with self._lock: + self._last[(key, int(user_id))] = time.monotonic() + try: + logging.getLogger('bot').debug(f"CooldownManager.record: key={key} user={user_id} recorded") + except Exception: + pass + + async def peek(self, key: str, user_id: int, cooldown_sec: float) -> float: + """Return seconds remaining (0 if allowed) without updating state.""" + now = time.monotonic() + last = self._last.get((key, int(user_id)), 0.0) + rem = float(cooldown_sec) - (now - last) + try: + logging.getLogger('bot').debug(f"CooldownManager.peek: key={key} user={user_id} rem={max(0.0, rem):.3f}s") + except Exception: + pass + return max(0.0, rem) + + async def clear(self, key: str = None, user_id: int = None): + """Clear stored timestamps selectively or entirely.""" + async with self._lock: + if key is None and user_id is None: + self._last.clear() + return + to_delete = [] + for k in list(self._last.keys()): + k_key, k_user = k + if (key is None or k_key == key) and (user_id is None or k_user == int(user_id)): + to_delete.append(k) + for k in to_delete: + del self._last[k] diff --git a/src/modelfile.py b/src/modelfile.py new file mode 100644 index 0000000..dec7906 --- /dev/null +++ b/src/modelfile.py @@ -0,0 +1,132 @@ +import os +import re +import json +from typing import Dict, Optional, Any + + +def _read_file(path: str) -> str: + with open(path, 'r', encoding='utf-8') as f: + return f.read() + + +def _coerce_value(val: str) -> Any: + """Try to coerce a string to int/float/bool otherwise return stripped string.""" + v = val.strip() + if not v: + return v + # booleans + if v.lower() in ("true", "false"): + return v.lower() == "true" + # numbers + try: + if '.' in v: + return float(v) + return int(v) + except Exception: + # strip surrounding quotes + if (v.startswith('"') and v.endswith('"')) or (v.startswith("'") and v.endswith("'")): + return v[1:-1] + return v + + +def parse_mod_file(path: str) -> Dict[str, Optional[object]]: + """Parse a .mod DSL or JSON modelfile and return a dict with normalized keys. + + Returns keys: name, base_model, system, template, params, includes + """ + text = _read_file(path) + _, ext = os.path.splitext(path) + ext = ext.lower() + + if ext == '.json': + data = json.loads(text) + return { + 'name': data.get('name') or os.path.basename(path), + 'base_model': data.get('from') or data.get('base_model'), + 'system': data.get('system') or data.get('SYSTEM'), + 'template': data.get('template'), + 'params': data.get('params', {}), + 'includes': data.get('includes', []), + } + + # DSL (.mod) parsing + base_model = None + params: Dict[str, Any] = {} + system = None + template = None + name = os.path.basename(path) + includes = [] + + # NAME + m = re.search(r'^NAME\s+(.+)$', text, flags=re.MULTILINE) + if m: + name = m.group(1).strip() + + # FROM + m = re.search(r'^FROM\s+(.+)$', text, flags=re.MULTILINE) + if m: + base_model = m.group(1).strip() + + # INCLUDE + for im in re.finditer(r'^INCLUDE\s+(.+)$', text, flags=re.MULTILINE): + inc = im.group(1).strip().strip('"').strip("'") + if inc: + includes.append(inc) + + # PARAMETER key value (value may be quoted) + for pm in re.finditer(r'^PARAMETER\s+(\w+)\s+(.+)$', text, flags=re.MULTILINE): + key = pm.group(1) + val = pm.group(2).strip() + params[key] = _coerce_value(val) + + # SYSTEM triple-quoted + sm = re.search(r'SYSTEM\s+"""([\s\S]*?)"""', text) + if sm: + system = sm.group(1).strip() + + # TEMPLATE triple-quoted + tm = re.search(r'TEMPLATE\s+"""([\s\S]*?)"""', text) + if tm: + template = tm.group(1).strip() + + return { + 'name': name, + 'base_model': base_model, + 'system': system, + 'template': template, + 'params': params, + 'includes': includes, + } + + + +def load_modfile_if_exists(path: str) -> Optional[Dict[str, object]]: + if not path: + return None + path_input = os.path.expanduser(path) + candidates = [] + src_dir = os.path.dirname(__file__) + repo_root = os.path.normpath(os.path.join(src_dir, '..')) + + if os.path.isabs(path_input): + candidates.append(path_input) + else: + candidates.append(os.path.normpath(os.path.join(src_dir, path_input))) + candidates.append(os.path.normpath(os.path.join(repo_root, path_input))) + candidates.append(os.path.normpath(os.path.join(repo_root, 'examples', os.path.basename(path_input)))) + candidates.append(os.path.normpath(os.path.join(repo_root, 'personas', os.path.basename(path_input)))) + candidates.append(os.path.normpath(os.path.join(src_dir, os.path.basename(path_input)))) + + candidates.append(path_input) + + for candidate in candidates: + try: + if os.path.exists(candidate): + parsed = parse_mod_file(candidate) + if isinstance(parsed, dict): + parsed['_source_path'] = candidate + return parsed + except Exception: + continue + + return None diff --git a/src/personality.py b/src/personality.py index bc15fcf..e9a219b 100644 --- a/src/personality.py +++ b/src/personality.py @@ -9,10 +9,26 @@ PERSONA_FILE = "persona.json" def load_persona(): base_dir = os.path.dirname(__file__) # Path to /src/ + # If a modelfile is active and contains a system/template, expose it as + # the persona structure used by the rest of the codebase. Import `ai` + # lazily to avoid circular imports at module import time. + try: + import ai + if getattr(ai, 'MODFILE', None): + MODFILE = ai.MODFILE + persona = { + 'name': MODFILE.get('name') or 'ModPersona', + 'prompt_inject': MODFILE.get('system') or '', + 'emoji': '๐Ÿค–', + 'style_prefix': (MODFILE.get('name') or 'Delta') + ':' + } + return persona + except Exception: + pass + persona_path = os.path.join(base_dir, "persona.json") if not os.path.exists(persona_path): - #print("โš ๏ธ persona.json not found. Using raw LLM mode.") logger.info("โš ๏ธ persona.json not found. Using raw LLM mode.") return None @@ -20,12 +36,10 @@ def load_persona(): with open(persona_path, "r", encoding="utf-8") as f: data = json.load(f) if not data.get("name") or not data.get("prompt_inject"): - #print("โš ๏ธ persona.json missing fields. Using raw LLM mode.") logger.info("โš ๏ธ persona.json missing fields. Using raw LLM mode.") return None return data except Exception as e: - #print(f"โš ๏ธ Failed to load persona.json: {e}") logger.info(f"โš ๏ธ Failed to load persona.json: {e}") return None diff --git a/src/settings.yml b/src/settings.yml index 9466e15..17e213c 100644 --- a/src/settings.yml +++ b/src/settings.yml @@ -13,7 +13,7 @@ autochat: context: enabled: false # not working must implement - max_messages: 10 # max messages to keep in context + max_messages: 0 # max messages to keep in context user_profiles: enable_custom_prompt: true # โ† Set false to ignore user `custom_prompt` values in replies @@ -46,3 +46,8 @@ scheduler: inactivity: threshold_minutes: 120 + +ai: + use_modfile: true + modfile_path: "../examples/gojo.mod" + diff --git a/src/user_profiles.json b/src/user_profiles.json index 772fc62..349db75 100644 --- a/src/user_profiles.json +++ b/src/user_profiles.json @@ -3,9 +3,9 @@ "name": "themiloverse", "display_name": "Miguel", "first_seen": "2025-05-15T03:16:30.011640", - "last_seen": "2025-09-19T17:51:52.553254", - "last_message": "2025-09-19T17:51:52.553254", - "interactions": 242, + "last_seen": "2025-09-20T19:04:27.735898", + "last_message": "2025-09-20T19:04:27.735898", + "interactions": 364, "pronouns": "he/him", "avatar_url": "https://cdn.discordapp.com/avatars/161149541171593216/fb0553a29d9f73175cb6aea24d0e19ec.png?size=1024", "custom_prompt": "delta is very nice to me since I am her master, and creator" diff --git a/tests/test_modelfile.py b/tests/test_modelfile.py new file mode 100644 index 0000000..92de9c2 --- /dev/null +++ b/tests/test_modelfile.py @@ -0,0 +1,39 @@ +import os +from src.modelfile import parse_mod_file, load_modfile_if_exists + + +def test_parse_simple_mod(tmp_path): + content = ''' +NAME Gojo +FROM gemma3:12b +PARAMETER temperature 0.7 +SYSTEM """ +You are Gojo, sarcastic and helpful. +""" +TEMPLATE """ +{{ .System }} +{{ .Prompt }} +""" +''' + p = tmp_path / "gojo.mod" + p.write_text(content) + parsed = parse_mod_file(str(p)) + assert parsed['name'] == 'Gojo' + assert parsed['base_model'] == 'gemma3:12b' + assert parsed['params']['temperature'] == 0.7 + assert 'Gojo' in parsed['system'] or 'Gojo' in parsed['template'] + + +def test_parse_json_mod(tmp_path): + data = { + "name": "json-persona", + "from": "gemma3:12b", + "system": "You are JSON persona", + "params": {"temperature": 0.5} + } + p = tmp_path / "j.mod.json" + p.write_text(str(data).replace("'", '"')) + parsed = parse_mod_file(str(p)) + assert parsed['name'] == 'json-persona' + assert parsed['base_model'] == 'gemma3:12b' + assert parsed['params']['temperature'] == 0.5