Отправка сообщений на каналы через ir c .bot.SingleServerIRCBot без команды - PullRequest
0 голосов
/ 29 февраля 2020

Я все еще новичок в Python и не могу обойти эту проблему. У меня бот IR C работает довольно хорошо, который использует ib3.bot (который использует ir c .bot.SingleServerIRCBot). Никаких проблем с ботом. Тем не менее, я написал приведенный ниже код для обработки событий для потока событий WikiTech. Этот код прекрасно работает в Jupyter Notebook.

Вот в чем проблема: если я помещу код в бот и запускаю его с помощью команды, он блокирует бота в l oop и бот перестает отвечать на запросы. Если я пишу l oop вне класса бота, я не могу понять, как заставить бота отправлять сообщения на каналы.

Желаемое решение: я бы хотел включить код в py-файл бота или импортируйте требуемую функцию в новый класс в отдельном py-файле. Как и другие мои вопросы, я чувствую, что этот ответ находится прямо передо мной, и я просто не вижу ответа.

Моя последняя попытка закончилась строкой conn.privmsg(chan, "%s: A change was made to %s" % (nicks, title)), которая работает, код внутри on_* часть установки бота, но это блокирует бот только для этого l oop.

Код следует:

for line in EventSource(wiki.stream):
    if line.event == 'message':
        try:
            change = json.loads(line.data)
        except ValueError:
            continue
        proj = str(change['wiki'])
        title = str(change['title'])
        if wiki.checkPage(proj, title) is not None:
            data = wiki.getPage(proj, title)
            channels = []
            for record in data:
                if record[3] == "yes":
                    channels.append(record[2])
            channels = list(dict.fromkeys(channels)) # Collapse duplicate channels
            for chan in channels:
                nicks = ""
                data = wiki.getPageNicks(proj, title, chan)
                for nick in data:
                    if nicks == "":
                        nicks = nick[0]
                    else:
                        nicks = nick[0] + " " + nicks
                conn.privmsg(chan, "%s: A change was made to %s" % (nicks, title))
        else:
            pass
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...