aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/examples/plugins/lua.py
diff options
context:
space:
mode:
Diffstat (limited to 'examples/plugins/lua.py')
-rw-r--r--examples/plugins/lua.py64
1 files changed, 0 insertions, 64 deletions
diff --git a/examples/plugins/lua.py b/examples/plugins/lua.py
deleted file mode 100644
index 6a36827..0000000
--- a/examples/plugins/lua.py
+++ /dev/null
@@ -1,64 +0,0 @@
-from iamai import Plugin
-from iamai.exceptions import GetEventTimeout
-from numpy.random import Generator
-from iamai.adapter.onebot11.message import CQHTTPMessage, CQHTTPMessageSegment
-from iamai.log import logger
-from lupa import LuaRuntime
-from iamai.utils import sync_func_wrapper
-import asyncio
-
-lua = LuaRuntime(unpack_returned_tuples=True)
-ms = CQHTTPMessageSegment
-
-
-class Lua(Plugin):
- priority = 1
- prefix = "/lua"
-
- async def handle(self) -> None:
- try:
- self.suffix = self.event.message.get_plain_text()[len(self.prefix) + 1 :]
-
- class msg:
- priority = self.priority
- prefix = self.prefix
- fromMsg = self.event.message
- suffix = self.suffix
- event = self.event
-
- def echo(self, message=None):
- if not message:
- return self.__str__
-
- loop = asyncio.get_event_loop()
- coro = self.event.reply(message)
- asyncio.run_coroutine_threadsafe(coro, loop)
-
- def ask(self, message=None, timeout=10, **kwargs):
- if not message:
- return self.__str__
-
- loop = asyncio.get_event_loop()
- try:
- coro = self.event.ask(message, timeout=timeout)
- asyncio.run_coroutine_threadsafe(coro, loop)
- except GetEventTimeout:
- return self.__str__
- else:
- coro = self.event.reply(**kwargs)
- asyncio.run_coroutine_threadsafe(coro, loop)
-
- lua.globals().msg = msg
- lua.globals().event = self.event
- # logger.info(lua.eval(self.suffix))
- if result := lua.eval(self.suffix):
- await self.event.reply(result)
- except Exception as e:
- await self.event.reply(f"ERROR!{e!r}")
- logger.info(f"ERROR with message: {e}")
-
- async def rule(self) -> bool:
- return (
- self.event.type == "message"
- and self.event.message.get_plain_text().startswith(self.prefix)
- )