Brian S. Stephan
6136127c5f
this is the first step in trying to get the bot to support multiple servers with different channels, countdown triggers, and so on this also ends up affecting some configuration around: * dispatch * markov * admin privmsg form
41 lines
1.3 KiB
Python
41 lines
1.3 KiB
Python
"""Manage ircbot models and admin actions in the admin interface."""
|
|
|
|
import logging
|
|
import xmlrpc.client
|
|
|
|
from django.contrib import admin
|
|
from django.shortcuts import render
|
|
|
|
from ircbot.forms import PrivmsgForm
|
|
from ircbot.models import Alias, BotUser, IrcChannel, IrcPlugin, IrcServer
|
|
|
|
log = logging.getLogger('ircbot.admin')
|
|
|
|
|
|
def send_privmsg(request):
|
|
"""Send a privmsg over XML-RPC to the IRC bot."""
|
|
if request.method == 'POST':
|
|
form = PrivmsgForm(request.POST)
|
|
if form.is_valid():
|
|
target = form.cleaned_data['target']
|
|
message = form.cleaned_data['message']
|
|
|
|
bot_url = 'http://{0:s}:{1:d}/'.format(form.cleaned_data['xmlrpc_host'],
|
|
form.cleaned_data['xmlrpc_port'])
|
|
bot = xmlrpc.client.ServerProxy(bot_url, allow_none=True)
|
|
bot.reply(None, message, False, target)
|
|
form = PrivmsgForm()
|
|
else:
|
|
form = PrivmsgForm()
|
|
|
|
return render(request, 'privmsg.html', {'form': form})
|
|
|
|
|
|
admin.site.register(Alias)
|
|
admin.site.register(BotUser)
|
|
admin.site.register(IrcChannel)
|
|
admin.site.register(IrcPlugin)
|
|
admin.site.register(IrcServer)
|
|
|
|
admin.site.register_view('ircbot/privmsg/', "Ircbot - privmsg", view=send_privmsg, urlname='ircbot_privmsg')
|