Python IRC бот вопрос - PullRequest
       33

Python IRC бот вопрос

0 голосов
/ 02 апреля 2011

Я хочу создать бота, который позволит мне определять функции из irc и обращаться с моим ботом также как с интерпретатором Python.

Например, я хочу создать бота, который может делать что-то вроде следующего:

<mynick> py print "test"
<bot> test
<mynick> define hi(): print "hi"
<mynick> hi()
<bot> hi

МОЙ ВОПРОС КАК ЭТО СДЕЛАТЬ

Ответы [ 3 ]

1 голос
/ 02 апреля 2011

Если вас не беспокоит безопасность (и если это личный проект, то это допустимое предположение), то в Python есть несколько функций (compile, exec, eval), которые могут здесь помочь Обратите внимание, что есть различия между Python 2 и Python 3, но следующий пример работает для обоих:

>>> s = "print('hello world')"
>>> code = compile(s, "<string>", "exec")
>>> exec(code)
hello world

Если вы хотите позволить другим людям использовать этого бота, вам нужно будет очень внимательно относиться к функциям, которые вы позволяете людям вызывать. Например, большинство вещей в модуле os потенциально могут выполнять нежелательные действия в контексте irc-бота.

0 голосов
/ 21 апреля 2012

Вы можете подключить свой код к следующему: http://tumbolia.appspot.com/py/

import urllib, urllib2
uri = 'http://tumbolia.appspot.com/py/'
response = urllib2.urlopen(uri + urllib.quote("print 'hello world!'")).read()
print response

Хорошая особенность этого решения состоит в том, что вам не нужно беспокоиться о коде, выполняемом на вашем сервере.Вот как бот-фенни IRC выполняет код Python для команды .py.

0 голосов
/ 14 апреля 2011

Я написал skybot , у которого есть функциональность, близкая к тому, что вы хотите.

<rmmh> .py print "hello %03d, %s" % (5, "blah")
<skybot> Scaevolus: hello 005, blah

Интерпретатор Python работает на GAE и является клоном http://shell.appspot.com/, модифицированным, чтобы не сохранять состояние, чтобы люди не могли сломать бот.

...