问题描述
的(不以英语为母语,对不起,可能是蹩脚的英语,我还编程的新手)。的结果
您好,我试图用QueryServer做一个机器人连接到一个TeamSpeak服务器。经过与它挣扎的天... ...它的工作原理,只有1问题,我坚持用这个。
如果你需要检查,这是TeamSpeak API,我使用:的
这是究竟是什么在我的脚本发生摘要:
- 它连接。
- 它检查通道ID(和它自己的客户端ID)
- 它加入频道
- 脚本结束,因此它断开。
我的问题是:我怎样才能使它不会断开?我怎样才能使脚本留在等待状态,以便可以在通道如果有人类型喜机器人读?所有的阅读文章并回答他们所需要的code似乎易于编程,但我现在面临一个问题,我不能让机器人运行,因为它尽快关闭该文件,因为它结束运行脚本
更多信息:结果
我使用的的Python 3.4.1 。结果
我试着学习线程但无论哪种M'm哑或者虽然这将不工作的方式我。结果
在API有一个名为 ON_EVENT
,我想保持运行所有的时间功能。僵尸code应该只运行一次,然后保持等待,直到事件发生。我应该怎么做呢?毫无头绪。
code:
进口TS3
进口telnetlib
进口时间类BotPrincipal:
高清Conectar(ts3conn):
MIID = [我[在ts3conn.whoami的client_id]我为()]
ChannelToJoin =[Pruebas]机器人
ts3conn.on_event = BotPrincipal.EventHappened()
尝试:
BuscandoIDCanal = ts3conn.channelfind(模式= ChannelToJoin)
IDCanal = [I [CID对于我在BuscandoIDCanal]
如果没有IDCanal:
打印(没有该名称的通道)
返回None
其他:
MIID = STR(MIID).replace(',)
MIID = STR(MIID).replace(],)
MIID = STR(MIID).replace([,)
IDCanal = STR(IDCanal).replace(',)
IDCanal = STR(IDCanal).replace(],)
IDCanal = STR(IDCanal).replace([,)
打印(ID去管+ ChannelToJoin +:+ IDCanal)
打印(ID德cliente+昵称+:+ MIID)
尝试:
打印(移动到你:+ ChannelToJoin)
ts3conn.clientmove(CID = IDCanal,CLID = MIID)#entra人管
尝试:
打印(从问计通知:+ ChannelToJoin)
ts3conn.servernotifyregister(事件=通道,ID_ = IDCanal)
ts3conn.servernotifyregister(事件=textchannel,ID_ = IDCanal)
除了ts3.query.TS3QueryError:
打印(您无权使用telnet命令:servernotifyregister)
打印(-------博特LISTO -------)
除了ts3.query.TS3QueryError:
打印(您无权使用telnet命令:clientmove)
除了ts3.query.TS3QueryError:
打印(+ ChannelToJoin +的错误结论ID远程登录:channelfind) 高清EventHappened():
打印(不工作)#所需数据#
USER =thisisafakename
PASS =东西
HOST =111.111.111.111
PORT = 10011
SID = 1如果__name__ ==__main__:
与ts3.query.TS3Connection(主机,端口)为ts3conn:
ts3conn.login(client_login_name = USER,client_login_password = PASS)
ts3conn.use(SID = SID)
打印(连接到+ HOST)
BotPrincipal.Conectar(ts3conn)
这在API快速一瞥,它看起来像你需要明确地告诉 ts3conn
对象等待事件。似乎有几个方法可以做到这一点,但是的似乎是最明显的:
Presumably as each command comes in, it will call your on_event
handler, then when you return from that it will go back to waiting forever for the next command.
I don't know if you need threads here or not, but the docs for recv_in_thread
make it sound like you might:
You presumably want to get both servernotify events and also commands, and I guess the way this library is written you need threads for that? If so, just call ts3conn.recv_in_thread()
instead of ts3conn.recv(True)
. (If you look at the source, all that does is start a background thread and call self.recv(True)
on that thread.)
这篇关于如何保持一个python脚本3(BOT)运行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!