1818  /ollama What is Python? 
1919
2020- To enable or disable automatic responses in channels: 
21-   /set plugins.var.python.ollama_bot .highlight_response on  # Enable responses in channels 
22-   /set plugins.var.python.ollama_bot .highlight_response off # Disable responses in channels 
21+   /set plugins.var.python.ollama .highlight_response on  # Enable responses in channels 
22+   /set plugins.var.python.ollama .highlight_response off # Disable responses in channels 
2323
2424- To enable or disable automatic responses in private messages: 
25-   /set plugins.var.python.ollama_bot .pm_response on  # Enable PM responses 
26-   /set plugins.var.python.ollama_bot .pm_response off # Disable PM responses 
25+   /set plugins.var.python.ollama .pm_response on  # Enable PM responses 
26+   /set plugins.var.python.ollama .pm_response off # Disable PM responses 
2727
2828Dependencies: 
2929- Requires an Ollama server running locally at http://localhost:11434/api/generate 
3030""" 
3131
3232# Script metadata 
33- SCRIPT_NAME  =  "ollama_bot " 
33+ SCRIPT_NAME  =  "ollama " 
3434SCRIPT_AUTHOR  =  "teraflops" 
35- SCRIPT_VERSION  =  "1.9 " 
35+ SCRIPT_VERSION  =  "2.1 " 
3636SCRIPT_LICENSE  =  "MIT" 
3737SCRIPT_DESC  =  "Automatically responds to mentions using Ollama and allows manual queries, including PMs" 
3838OLLAMA_API_URL  =  "http://localhost:11434/api/generate" 
@@ -51,7 +51,7 @@ def setup_config():
5151def  ask_ollama (message ):
5252    """Send a query to Ollama and return the complete response.""" 
5353    try :
54-         data  =  {"model" : "mistral " , "prompt" : message , "stream" : False }
54+         data  =  {"model" : "gemma " , "prompt" : message , "stream" : False }
5555        headers  =  {"Content-Type" : "application/json" }
5656
5757        response  =  requests .post (
@@ -70,6 +70,16 @@ def ask_ollama(message):
7070    except  requests .exceptions .RequestException  as  e :
7171        return  f"Error connecting to Ollama: { str (e )}  
7272
73+ def  command_ollama (data , buffer , args ):
74+     """Command /ollama to manually ask Ollama a question.""" 
75+     if  not  args :
76+         weechat .prnt (buffer , "[Ollama] Usage: /ollama <question>" )
77+         return  weechat .WEECHAT_RC_OK 
78+     
79+     response  =  ask_ollama (args )
80+     weechat .prnt (buffer , f"[Ollama] { response }  )
81+     return  weechat .WEECHAT_RC_OK 
82+ 
7383def  message_callback (data , buffer , date , tags , displayed , highlight , prefix , message ):
7484    """Detect mentions in channels or private messages and respond automatically with Ollama.""" 
7585
@@ -79,17 +89,17 @@ def message_callback(data, buffer, date, tags, displayed, highlight, prefix, mes
7989    buffer_type  =  weechat .buffer_get_string (buffer , "localvar_type" )
8090    is_private  =  buffer_type  ==  "private" 
8191    username  =  weechat .info_get ("irc_nick" , "" )  # Get the current IRC username 
82-     is_mentioned  =  username .lower () in  message .lower ()
92+     is_mentioned  =  f"@ { username .lower ()} " in  message .lower ()   # Ensure @username is explicitly mentioned 
8393
8494    # Ignore private messages if pm_response is off 
8595    if  is_private  and  weechat .config_get_plugin ("pm_response" ) ==  "off" :
8696        return  weechat .WEECHAT_RC_OK 
8797
88-     # Avoid responding to every PM automatically  
98+     # Only respond in private messages if it's a direct question  
8999    if  is_private  and  not  message .strip ().endswith ("?" ):
90100        return  weechat .WEECHAT_RC_OK 
91101
92-     # Only respond in channels if mentioned 
102+     # Only respond in channels if explicitly  mentioned or highlighted  
93103    if  not  is_private  and  not  is_mentioned  and  not  int (highlight ):
94104        return  weechat .WEECHAT_RC_OK 
95105
@@ -102,6 +112,7 @@ def message_callback(data, buffer, date, tags, displayed, highlight, prefix, mes
102112
103113    return  weechat .WEECHAT_RC_OK 
104114
115+ 
105116def  config_callback (data , option , value ):
106117    """Callback for Weechat configuration changes.""" 
107118    weechat .prnt ("" , f"[Ollama] Configuration changed: { option } { value }  )
@@ -110,11 +121,12 @@ def config_callback(data, option, value):
110121# Register configuration with /set 
111122weechat .config_set_desc_plugin ("highlight_response" , "Automatically respond to mentions in channels (on/off)" )
112123weechat .config_set_desc_plugin ("pm_response" , "Automatically respond to private messages (on/off)" )
113- weechat .hook_config ("plugins.var.python.ollama_bot .highlight_response" , "config_callback" , "" )
114- weechat .hook_config ("plugins.var.python.ollama_bot .pm_response" , "config_callback" , "" )
124+ weechat .hook_config ("plugins.var.python.ollama .highlight_response" , "config_callback" , "" )
125+ weechat .hook_config ("plugins.var.python.ollama .pm_response" , "config_callback" , "" )
115126
116127# Register commands and hooks 
117128weechat .hook_command ("ollama" , "Ask something to Ollama" , "<question>" , "Example: /ollama What is Python?" , "" , "command_ollama" , "" )
118129weechat .hook_print ("" , "notify_highlight" , "" , 1 , "message_callback" , "" )
119130weechat .hook_print ("" , "notify_message" , "" , 1 , "message_callback" , "" )
120131weechat .hook_print ("" , "notify_private" , "" , 1 , "message_callback" , "" )
132+ 
0 commit comments