TRIGONIM / ggram

🤖 Lua library for the Telegram bot API. You can even use it in Garry's Mod
https://trigonim.github.io/ggram/
MIT License
20 stars 1 forks source link

Не запускается на чистом сервере Garry's mod #5

Closed vtqq613 closed 1 month ago

vtqq613 commented 2 months ago
GG Loading ggram/extensions/basic_handlers.lua
GG Loading ggram/extensions/multipart_methods.lua
[ggram] Couldn't include file 'includes/modules/gmod/table.lua' - File not found or is empty (@addons/ggram/lua/ggram/reply.lua (line 1))
  1. unknown - addons/ggram/lua/ggram/reply.lua:1
   2. include - [C]:-1
    3. require - addons/ggram/lua/autorun/ggram-launcher.lua:38
     4. unknown - addons/ggram/lua/ggram/extensions/multipart_methods.lua:8
      5. include - [C]:-1
       6. loadExtensions - addons/ggram/lua/autorun/ggram-launcher.lua:27
        7. unknown - addons/ggram/lua/autorun/ggram-launcher.lua:55
[ggram] addons/ggram/lua/ggram/reply.lua:1: Module not found!
  1. require - [C]:-1
   2. unknown - addons/ggram/lua/ggram/reply.lua:1
    3. include - [C]:-1
     4. require - addons/ggram/lua/autorun/ggram-launcher.lua:38
      5. unknown - addons/ggram/lua/ggram/extensions/multipart_methods.lua:8
       6. include - [C]:-1
        7. loadExtensions - addons/ggram/lua/autorun/ggram-launcher.lua:27
         8. unknown - addons/ggram/lua/autorun/ggram-launcher.lua:55
[ggram] addons/ggram/lua/ggram/extensions/multipart_methods.lua:11: attempt to index local 'RESP' (a nil value)
  1. unknown - addons/ggram/lua/ggram/extensions/multipart_methods.lua:11
   2. include - [C]:-1
    3. loadExtensions - addons/ggram/lua/autorun/ggram-launcher.lua:27
     4. unknown - addons/ggram/lua/autorun/ggram-launcher.lua:55
AMD-NICK commented 2 months ago

Увидел, проверю. Постараюсь к вечеру, но не обещаю.

Если получится разобраться самостоятельно – дай знать

AMD-NICK commented 1 month ago

screenshot_2024-09-04_17 59 45@2x

Измени файл загрузки вот так, пожалуйста, перезапусти сервер и пришли свежую ошибку с более дательным логом

P.S. Еще debug.Trace() добавь после принта

AMD-NICK commented 1 month ago

addons/ggram/lua/ggram/extensions/multipart_methods.lua:8

Что это за файл у тебя? Скинь

AMD-NICK commented 1 month ago

На чистом сервере у меня все заработало нормально

# Устанавливаем чистый сервер
$HOME/steamcmd/steamcmd.sh +force_install_dir "$HOME/gm/test" +login anonymous +app_update 4020 validate +quit

# Закрываем steamcmd и переходим в папку addons
cd ~/gm/test/garrysmod/addons

# Скачиваем последнюю версию ggram с гита
git clone git@github.com:TRIGONIM/ggram.git
mkdir -p ggram-mod/lua/autorun
mkdir -p ggram-mod/lua/ggram/bots/testbot

# Редактируем файл загрузчика. Добавляем туда код из инструкции для гмода
code ggram-mod/lua/autorun/ggram-load.lua

# Создаем файл бота и размещаем в нем код
code ggram-mod/lua/ggram/bots/testbot/_init.lua

# Запуск сервера из папки garrysmod
./srcds_run -port 27015 +maxplayers 60 +map gm_construct
Содержимое тестового (актуального) ggram-load.lua

```lua -- This file should be shared for loading prior to SERVER -- If it is loaded too late, ggram-dependent scripts may throw errors if CLIENT then return end local function loadBots(path, iDeep) iDeep = iDeep or 0 local files,dirs = file.Find(path .. "/*","LUA") for _,f in ipairs(files) do if f == "_init.lua" then print("GG Loading Bot " .. path) include(path .. "/" .. f) break end end for _,d in ipairs(iDeep > 0 and dirs or {}) do loadBots(path .. "/" .. d, iDeep - 1) end end local function loadExtensions(path) local files = file.Find(path .. "/*","LUA") for _,f in ipairs(files) do local fpath = path .. "/" .. f print("GG Loading " .. fpath) include(fpath) end end local gmod_require_override do local require_cache = {} gmod_require_override = function(path) if require_cache[path] ~= nil then return require_cache[path] end local content = include(path .. ".lua") require_cache[path] = content or false return content end end gg_require_orig = gg_require_orig or require -- Override to make "require("deferred")", "require("ggram.middlewares.name")", etc. work. function require(path) path = path:gsub("%.", "/") if file.Exists(path .. ".lua", "LUA") then return gmod_require_override(path) end return gg_require_orig(path) end ggram = require("ggram") loadExtensions("ggram/extensions") loadBots("ggram/bots", 1) ```

Содержимое файла с ботом `bots/testbot/_init.lua`

```lua local ggram = require("ggram") local bot = ggram("12345:secret") require("ggram.polling").start(bot) bot.command("start", function(ctx) print("Написал " .. ctx.from.username) ctx.reply.text("Hello @" .. ctx.from.username) end) print("Бот запустился") ```

screenshot_2024-09-04_21 29 36@2x