Advertisement
Guest User

Untitled

a guest
May 3rd, 2016
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 249.15 KB | None | 0 0
  1. #########################################
  2. # THIS FILE IS GENERATED BY make-mod.py #
  3. # DO NOT EDIT IT BY HAND, EDIT EITHER #
  4. # make-mod.py OR make-mod.header.py #
  5. # IN THE CODEGEN DIRECTORY, AND RE-GEN #
  6. #########################################
  7.  
  8. import typing
  9. from .line import Line, parse_line
  10.  
  11. #
  12. # This file has been generated from the Earendil IRC Protocol Specification,
  13. # version 0.0
  14. #
  15.  
  16. class Message:
  17. __slots__ = ['source']
  18.  
  19. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode('utf-8')) -> Line:
  20. raise NotImplementedError('Message.to_line')
  21.  
  22. def to_raw(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode('utf-8')) -> bytes:
  23. return self.to_line().to_raw()
  24.  
  25. class Unknown(Message):
  26. __slots__ = ['command', 'arguments']
  27.  
  28. def __init__(self, source: str, command: typing.Union[bytes, int], arguments: typing.List[bytes]) -> None:
  29. self.source = source
  30. self.command = command
  31. self.arguments = arguments
  32.  
  33. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode('utf-8')) -> Line:
  34. source = None
  35. if self.source is not None:
  36. source = encode(self.source)
  37. return Line(source, self.command, self.arguments)
  38.  
  39. def __repr__(self) -> str:
  40. return "Unknown(source={}, command={}, arguments={})".format(repr(self.source), repr(self.command), repr(self.arguments))
  41.  
  42. def parse_line_message(line: bytes, decode: typing.Callable[[bytes], str] = lambda b: b.decode('utf-8')) -> Message:
  43. return parse_message(parse_line(line), decode)
  44.  
  45. #
  46. # make-mod.header.py above ^
  47. # make-mod.py generated code below v
  48. #
  49.  
  50.  
  51.  
  52. def parse_message(line: Line, decode: typing.Callable[[bytes], str] = lambda b: b.decode("utf-8")) -> Message:
  53. try:
  54. source = None
  55. if line.source is not None:
  56. source = decode(line.source)
  57.  
  58. except Exception:
  59. source = None
  60.  
  61. if line.command == b'PASS' and len(line.arguments) == 1: # Pass
  62. try:
  63. i = 0
  64. pass_password = decode(line.arguments[i])
  65. i += 1
  66. assert i == len(line.arguments)
  67. return Pass(source=source, password=pass_password)
  68. except Exception:
  69. pass
  70.  
  71. if line.command == b'NICK' and len(line.arguments) == 1: # Nick
  72. try:
  73. i = 0
  74. nick_nickname = decode(line.arguments[i])
  75. i += 1
  76. assert i == len(line.arguments)
  77. return Nick(source=source, nickname=nick_nickname)
  78. except Exception:
  79. pass
  80.  
  81. if line.command == b'USER' and len(line.arguments) == 4: # User
  82. try:
  83. i = 0
  84. user_user = decode(line.arguments[i])
  85. i += 1
  86. user_mode = int(line.arguments[i])
  87. i += 1
  88. # user_line.arguments[i]: '*'
  89. i += 1
  90. user_realname = decode(line.arguments[i])
  91. i += 1
  92. assert i == len(line.arguments)
  93. return User(source=source, user=user_user, mode=user_mode, realname=user_realname)
  94. except Exception:
  95. pass
  96.  
  97. if line.command == b'OPER' and len(line.arguments) == 2: # Oper
  98. try:
  99. i = 0
  100. oper_name = decode(line.arguments[i])
  101. i += 1
  102. oper_password = decode(line.arguments[i])
  103. i += 1
  104. assert i == len(line.arguments)
  105. return Oper(source=source, name=oper_name, password=oper_password)
  106. except Exception:
  107. pass
  108.  
  109. if line.command == b'MODE' and len(line.arguments) == 2: # Mode
  110. try:
  111. i = 0
  112. mode_name = decode(line.arguments[i])
  113. i += 1
  114. mode_mode = decode(line.arguments[i])
  115. i += 1
  116. assert i == len(line.arguments)
  117. return Mode(source=source, name=mode_name, mode=mode_mode)
  118. except Exception:
  119. pass
  120.  
  121. if line.command == b'SERVICE' and len(line.arguments) == 6: # Service
  122. try:
  123. i = 0
  124. service_nickname = decode(line.arguments[i])
  125. i += 1
  126. # service_line.arguments[i]: '*'
  127. i += 1
  128. service_distribution = decode(line.arguments[i])
  129. i += 1
  130. service_type = int(line.arguments[i])
  131. i += 1
  132. # service_line.arguments[i]: '0'
  133. i += 1
  134. service_info = decode(line.arguments[i])
  135. i += 1
  136. assert i == len(line.arguments)
  137. return Service(source=source, nickname=service_nickname, distribution=service_distribution, type=service_type, info=service_info)
  138. except Exception:
  139. pass
  140.  
  141. if line.command == b'QUIT' and len(line.arguments) <= 1: # Quit
  142. try:
  143. i = 0
  144. if len(line.arguments) > 0:
  145. quit_message = decode(line.arguments[i])
  146. i += 1
  147. else:
  148. quit_message = None
  149. assert i == len(line.arguments)
  150. return Quit(source=source, message=quit_message)
  151. except Exception:
  152. pass
  153.  
  154. if line.command == b'SQUIT' and len(line.arguments) == 2: # SQuit
  155. try:
  156. i = 0
  157. s_quit_server = decode(line.arguments[i])
  158. i += 1
  159. s_quit_comment = decode(line.arguments[i])
  160. i += 1
  161. assert i == len(line.arguments)
  162. return SQuit(source=source, server=s_quit_server, comment=s_quit_comment)
  163. except Exception:
  164. pass
  165.  
  166. if line.command == b'JOIN' and 1 <= len(line.arguments) <= 2: # ChannelJoin
  167. try:
  168. i = 0
  169. channel_join_channels = [decode(x) for x in line.arguments[i].split(b",")]
  170. i += 1
  171. if len(line.arguments) > 1:
  172. channel_join_keys = [decode(x) for x in line.arguments[i].split(b",")]
  173. i += 1
  174. else:
  175. channel_join_keys = None
  176. assert i == len(line.arguments)
  177. return ChannelJoin(source=source, channels=channel_join_channels, keys=channel_join_keys)
  178. except Exception:
  179. pass
  180.  
  181. if line.command == b'PART' and 1 <= len(line.arguments) <= 2: # ChannelPart
  182. try:
  183. i = 0
  184. channel_part_channels = [decode(x) for x in line.arguments[i].split(b",")]
  185. i += 1
  186. if len(line.arguments) > 1:
  187. channel_part_message = decode(line.arguments[i])
  188. i += 1
  189. else:
  190. channel_part_message = None
  191. assert i == len(line.arguments)
  192. return ChannelPart(source=source, channels=channel_part_channels, message=channel_part_message)
  193. except Exception:
  194. pass
  195.  
  196. if line.command == b'TOPIC' and 1 <= len(line.arguments) <= 2: # Topic
  197. try:
  198. i = 0
  199. topic_channel = decode(line.arguments[i])
  200. i += 1
  201. if len(line.arguments) > 1:
  202. topic_topic = decode(line.arguments[i])
  203. i += 1
  204. else:
  205. topic_topic = None
  206. assert i == len(line.arguments)
  207. return Topic(source=source, channel=topic_channel, topic=topic_topic)
  208. except Exception:
  209. pass
  210.  
  211. if line.command == b'NAMES' and len(line.arguments) <= 2: # Names
  212. try:
  213. i = 0
  214. if len(line.arguments) > 0:
  215. names_channels = [decode(x) for x in line.arguments[i].split(b",")]
  216. i += 1
  217. else:
  218. names_channels = None
  219. if len(line.arguments) > 1:
  220. names_target = decode(line.arguments[i])
  221. i += 1
  222. else:
  223. names_target = None
  224. assert i == len(line.arguments)
  225. return Names(source=source, channels=names_channels, target=names_target)
  226. except Exception:
  227. pass
  228.  
  229. if line.command == b'LIST' and len(line.arguments) <= 2: # List
  230. try:
  231. i = 0
  232. if len(line.arguments) > 0:
  233. list_channels = [decode(x) for x in line.arguments[i].split(b",")]
  234. i += 1
  235. else:
  236. list_channels = None
  237. if len(line.arguments) > 1:
  238. list_target = decode(line.arguments[i])
  239. i += 1
  240. else:
  241. list_target = None
  242. assert i == len(line.arguments)
  243. return List(source=source, channels=list_channels, target=list_target)
  244. except Exception:
  245. pass
  246.  
  247. if line.command == b'INVITE' and len(line.arguments) == 2: # Invite
  248. try:
  249. i = 0
  250. invite_nickname = decode(line.arguments[i])
  251. i += 1
  252. invite_channel = decode(line.arguments[i])
  253. i += 1
  254. assert i == len(line.arguments)
  255. return Invite(source=source, nickname=invite_nickname, channel=invite_channel)
  256. except Exception:
  257. pass
  258.  
  259. if line.command == b'KICK' and 2 <= len(line.arguments) <= 3: # Kick
  260. try:
  261. i = 0
  262. kick_channels = [decode(x) for x in line.arguments[i].split(b",")]
  263. i += 1
  264. kick_users = [decode(x) for x in line.arguments[i].split(b",")]
  265. i += 1
  266. if len(line.arguments) > 2:
  267. kick_comment = decode(line.arguments[i])
  268. i += 1
  269. else:
  270. kick_comment = None
  271. assert i == len(line.arguments)
  272. return Kick(source=source, channels=kick_channels, users=kick_users, comment=kick_comment)
  273. except Exception:
  274. pass
  275.  
  276. if line.command == b'PRIVMSG' and len(line.arguments) == 2: # Privmsg
  277. try:
  278. i = 0
  279. privmsg_target = decode(line.arguments[i])
  280. i += 1
  281. privmsg_message = decode(line.arguments[i])
  282. i += 1
  283. assert i == len(line.arguments)
  284. return Privmsg(source=source, target=privmsg_target, message=privmsg_message)
  285. except Exception:
  286. pass
  287.  
  288. if line.command == b'NOTICE' and len(line.arguments) == 2: # Notice
  289. try:
  290. i = 0
  291. notice_target = decode(line.arguments[i])
  292. i += 1
  293. notice_message = decode(line.arguments[i])
  294. i += 1
  295. assert i == len(line.arguments)
  296. return Notice(source=source, target=notice_target, message=notice_message)
  297. except Exception:
  298. pass
  299.  
  300. if line.command == b'MOTD' and len(line.arguments) <= 1: # Motd
  301. try:
  302. i = 0
  303. if len(line.arguments) > 0:
  304. motd_target = decode(line.arguments[i])
  305. i += 1
  306. else:
  307. motd_target = None
  308. assert i == len(line.arguments)
  309. return Motd(source=source, target=motd_target)
  310. except Exception:
  311. pass
  312.  
  313. if line.command == b'LUSERS' and len(line.arguments) <= 2: # Lusers
  314. try:
  315. i = 0
  316. if len(line.arguments) > 0:
  317. lusers_mask = decode(line.arguments[i])
  318. i += 1
  319. else:
  320. lusers_mask = None
  321. if len(line.arguments) > 1:
  322. lusers_target = decode(line.arguments[i])
  323. i += 1
  324. else:
  325. lusers_target = None
  326. assert i == len(line.arguments)
  327. return Lusers(source=source, mask=lusers_mask, target=lusers_target)
  328. except Exception:
  329. pass
  330.  
  331. if line.command == b'VERSION' and len(line.arguments) <= 1: # Version
  332. try:
  333. i = 0
  334. if len(line.arguments) > 0:
  335. version_target = decode(line.arguments[i])
  336. i += 1
  337. else:
  338. version_target = None
  339. assert i == len(line.arguments)
  340. return Version(source=source, target=version_target)
  341. except Exception:
  342. pass
  343.  
  344. if line.command == b'STATS' and len(line.arguments) <= 2: # Stats
  345. try:
  346. i = 0
  347. if len(line.arguments) > 0:
  348. stats_query = decode(line.arguments[i])
  349. i += 1
  350. else:
  351. stats_query = None
  352. if len(line.arguments) > 1:
  353. stats_target = decode(line.arguments[i])
  354. i += 1
  355. else:
  356. stats_target = None
  357. assert i == len(line.arguments)
  358. return Stats(source=source, query=stats_query, target=stats_target)
  359. except Exception:
  360. pass
  361.  
  362. if line.command == b'LINKS' and len(line.arguments) <= 2: # Links
  363. try:
  364. i = len(line.arguments) - 1
  365. if len(line.arguments) > 0:
  366. links_server = decode(line.arguments[i])
  367. i -= 1
  368. else:
  369. links_server = None
  370. if len(line.arguments) > 1:
  371. links_mask = decode(line.arguments[i])
  372. i -= 1
  373. else:
  374. links_mask = None
  375. assert i == -1
  376. return Links(source=source, server=links_server, mask=links_mask)
  377. except Exception:
  378. pass
  379.  
  380. if line.command == b'TIME' and len(line.arguments) <= 1: # Time
  381. try:
  382. i = 0
  383. if len(line.arguments) > 0:
  384. time_target = decode(line.arguments[i])
  385. i += 1
  386. else:
  387. time_target = None
  388. assert i == len(line.arguments)
  389. return Time(source=source, target=time_target)
  390. except Exception:
  391. pass
  392.  
  393. if line.command == b'CONNECT' and 2 <= len(line.arguments) <= 3: # ServerConnect
  394. try:
  395. i = 0
  396. server_connect_target = decode(line.arguments[i])
  397. i += 1
  398. server_connect_port = int(line.arguments[i])
  399. i += 1
  400. if len(line.arguments) > 2:
  401. server_connect_remote = decode(line.arguments[i])
  402. i += 1
  403. else:
  404. server_connect_remote = None
  405. assert i == len(line.arguments)
  406. return ServerConnect(source=source, target=server_connect_target, port=server_connect_port, remote=server_connect_remote)
  407. except Exception:
  408. pass
  409.  
  410. if line.command == b'TRACE' and len(line.arguments) <= 1: # Trace
  411. try:
  412. i = 0
  413. if len(line.arguments) > 0:
  414. trace_target = decode(line.arguments[i])
  415. i += 1
  416. else:
  417. trace_target = None
  418. assert i == len(line.arguments)
  419. return Trace(source=source, target=trace_target)
  420. except Exception:
  421. pass
  422.  
  423. if line.command == b'ADMIN' and len(line.arguments) <= 1: # Admin
  424. try:
  425. i = 0
  426. if len(line.arguments) > 0:
  427. admin_target = decode(line.arguments[i])
  428. i += 1
  429. else:
  430. admin_target = None
  431. assert i == len(line.arguments)
  432. return Admin(source=source, target=admin_target)
  433. except Exception:
  434. pass
  435.  
  436. if line.command == b'INFO' and len(line.arguments) <= 1: # Info
  437. try:
  438. i = 0
  439. if len(line.arguments) > 0:
  440. info_target = decode(line.arguments[i])
  441. i += 1
  442. else:
  443. info_target = None
  444. assert i == len(line.arguments)
  445. return Info(source=source, target=info_target)
  446. except Exception:
  447. pass
  448.  
  449. if line.command == b'SERVLIST' and len(line.arguments) <= 2: # ServList
  450. try:
  451. i = 0
  452. if len(line.arguments) > 0:
  453. serv_list_mask = decode(line.arguments[i])
  454. i += 1
  455. else:
  456. serv_list_mask = None
  457. if len(line.arguments) > 1:
  458. serv_list_type = decode(line.arguments[i])
  459. i += 1
  460. else:
  461. serv_list_type = None
  462. assert i == len(line.arguments)
  463. return ServList(source=source, mask=serv_list_mask, type=serv_list_type)
  464. except Exception:
  465. pass
  466.  
  467. if line.command == b'SQUERY' and len(line.arguments) == 2: # SQuery
  468. try:
  469. i = 0
  470. s_query_servicename = decode(line.arguments[i])
  471. i += 1
  472. s_query_text = decode(line.arguments[i])
  473. i += 1
  474. assert i == len(line.arguments)
  475. return SQuery(source=source, servicename=s_query_servicename, text=s_query_text)
  476. except Exception:
  477. pass
  478.  
  479. if line.command == b'WHO' and len(line.arguments) <= 2: # Who
  480. try:
  481. i = 0
  482. if len(line.arguments) > 0:
  483. who_mask = decode(line.arguments[i])
  484. i += 1
  485. else:
  486. who_mask = None
  487. if len(line.arguments) > 1:
  488. who_operators = True
  489. i += 1
  490. else:
  491. who_operators = False
  492. assert i == len(line.arguments)
  493. return Who(source=source, mask=who_mask, operators=who_operators)
  494. except Exception:
  495. pass
  496.  
  497. if line.command == b'WHOIS' and 1 <= len(line.arguments) <= 2: # WhoIs
  498. try:
  499. i = 0
  500. if len(line.arguments) > 1:
  501. who_is_target = decode(line.arguments[i])
  502. i += 1
  503. else:
  504. who_is_target = None
  505. who_is_masks = [decode(x) for x in line.arguments[i].split(b",")]
  506. i += 1
  507. assert i == len(line.arguments)
  508. return WhoIs(source=source, target=who_is_target, masks=who_is_masks)
  509. except Exception:
  510. pass
  511.  
  512. if line.command == b'WHOWAS' and 1 <= len(line.arguments) <= 3: # WhoWas
  513. try:
  514. i = 0
  515. who_was_nicknames = [decode(x) for x in line.arguments[i].split(b",")]
  516. i += 1
  517. if len(line.arguments) > 1:
  518. who_was_count = int(line.arguments[i])
  519. i += 1
  520. else:
  521. who_was_count = None
  522. if len(line.arguments) > 2:
  523. who_was_target = decode(line.arguments[i])
  524. i += 1
  525. else:
  526. who_was_target = None
  527. assert i == len(line.arguments)
  528. return WhoWas(source=source, nicknames=who_was_nicknames, count=who_was_count, target=who_was_target)
  529. except Exception:
  530. pass
  531.  
  532. if line.command == b'KILL' and len(line.arguments) == 2: # Kill
  533. try:
  534. i = 0
  535. kill_nickname = decode(line.arguments[i])
  536. i += 1
  537. kill_comment = decode(line.arguments[i])
  538. i += 1
  539. assert i == len(line.arguments)
  540. return Kill(source=source, nickname=kill_nickname, comment=kill_comment)
  541. except Exception:
  542. pass
  543.  
  544. if line.command == b'PING' and 1 <= len(line.arguments) <= 2: # Ping
  545. try:
  546. i = 0
  547. ping_server1 = decode(line.arguments[i])
  548. i += 1
  549. if len(line.arguments) > 1:
  550. ping_server2 = decode(line.arguments[i])
  551. i += 1
  552. else:
  553. ping_server2 = None
  554. assert i == len(line.arguments)
  555. return Ping(source=source, server1=ping_server1, server2=ping_server2)
  556. except Exception:
  557. pass
  558.  
  559. if line.command == b'PONG' and 1 <= len(line.arguments) <= 2: # Pong
  560. try:
  561. i = 0
  562. pong_server = decode(line.arguments[i])
  563. i += 1
  564. if len(line.arguments) > 1:
  565. pong_server2 = decode(line.arguments[i])
  566. i += 1
  567. else:
  568. pong_server2 = None
  569. assert i == len(line.arguments)
  570. return Pong(source=source, server=pong_server, server2=pong_server2)
  571. except Exception:
  572. pass
  573.  
  574. if line.command == b'ERROR' and len(line.arguments) == 1: # Error
  575. try:
  576. i = 0
  577. error_message = decode(line.arguments[i])
  578. i += 1
  579. assert i == len(line.arguments)
  580. return Error(source=source, message=error_message)
  581. except Exception:
  582. pass
  583.  
  584. if line.command == b'AWAY' and len(line.arguments) <= 1: # Away
  585. try:
  586. i = 0
  587. if len(line.arguments) > 0:
  588. away_text = decode(line.arguments[i])
  589. i += 1
  590. else:
  591. away_text = None
  592. assert i == len(line.arguments)
  593. return Away(source=source, text=away_text)
  594. except Exception:
  595. pass
  596.  
  597. if line.command == b'REHASH' and len(line.arguments) == 0: # Rehash
  598. try:
  599. return Rehash(source=source)
  600. except Exception:
  601. pass
  602.  
  603. if line.command == b'DIE' and len(line.arguments) == 0: # Die
  604. try:
  605. return Die(source=source)
  606. except Exception:
  607. pass
  608.  
  609. if line.command == b'RESTART' and len(line.arguments) == 0: # Restart
  610. try:
  611. return Restart(source=source)
  612. except Exception:
  613. pass
  614.  
  615. if line.command == b'SUMMON' and 1 <= len(line.arguments) <= 3: # Summon
  616. try:
  617. i = 0
  618. summon_user = decode(line.arguments[i])
  619. i += 1
  620. if len(line.arguments) > 1:
  621. summon_target = decode(line.arguments[i])
  622. i += 1
  623. else:
  624. summon_target = None
  625. if len(line.arguments) > 2:
  626. summon_channel = decode(line.arguments[i])
  627. i += 1
  628. else:
  629. summon_channel = None
  630. assert i == len(line.arguments)
  631. return Summon(source=source, user=summon_user, target=summon_target, channel=summon_channel)
  632. except Exception:
  633. pass
  634.  
  635. if line.command == b'USERS' and len(line.arguments) <= 1: # Users
  636. try:
  637. i = 0
  638. if len(line.arguments) > 0:
  639. users_target = decode(line.arguments[i])
  640. i += 1
  641. else:
  642. users_target = None
  643. assert i == len(line.arguments)
  644. return Users(source=source, target=users_target)
  645. except Exception:
  646. pass
  647.  
  648. if line.command == b'WALLOPS' and len(line.arguments) == 1: # WallOps
  649. try:
  650. i = 0
  651. wall_ops_message = decode(line.arguments[i])
  652. i += 1
  653. assert i == len(line.arguments)
  654. return WallOps(source=source, message=wall_ops_message)
  655. except Exception:
  656. pass
  657.  
  658. if line.command == b'USERHOST' and len(line.arguments) == 1: # UserHost
  659. try:
  660. i = 0
  661. user_host_nickname = decode(line.arguments[i])
  662. i += 1
  663. assert i == len(line.arguments)
  664. return UserHost(source=source, nickname=user_host_nickname)
  665. except Exception:
  666. pass
  667.  
  668. if line.command == b'ISON' and len(line.arguments) == 1: # IsOn
  669. try:
  670. i = 0
  671. is_on_nickname = decode(line.arguments[i])
  672. i += 1
  673. assert i == len(line.arguments)
  674. return IsOn(source=source, nickname=is_on_nickname)
  675. except Exception:
  676. pass
  677.  
  678. if line.command == 1 and len(line.arguments) == 2: # Welcome
  679. try:
  680. i = 0
  681. welcome_target = decode(line.arguments[i])
  682. i += 1
  683. welcome_message = decode(line.arguments[i])
  684. i += 1
  685. assert i == len(line.arguments)
  686. return Welcome(source=source, target=welcome_target, message=welcome_message)
  687. except Exception:
  688. pass
  689.  
  690. if line.command == 2 and len(line.arguments) == 2: # YourHost
  691. try:
  692. i = 0
  693. your_host_target = decode(line.arguments[i])
  694. i += 1
  695. your_host_message = decode(line.arguments[i])
  696. i += 1
  697. assert i == len(line.arguments)
  698. return YourHost(source=source, target=your_host_target, message=your_host_message)
  699. except Exception:
  700. pass
  701.  
  702. if line.command == 3 and len(line.arguments) == 2: # Created
  703. try:
  704. i = 0
  705. created_target = decode(line.arguments[i])
  706. i += 1
  707. created_message = decode(line.arguments[i])
  708. i += 1
  709. assert i == len(line.arguments)
  710. return Created(source=source, target=created_target, message=created_message)
  711. except Exception:
  712. pass
  713.  
  714. if line.command == 4 and len(line.arguments) == 2: # MyInfo
  715. try:
  716. i = 0
  717. my_info_target = decode(line.arguments[i])
  718. i += 1
  719. my_info_message = decode(line.arguments[i])
  720. i += 1
  721. assert i == len(line.arguments)
  722. return MyInfo(source=source, target=my_info_target, message=my_info_message)
  723. except Exception:
  724. pass
  725.  
  726. if line.command == 5 and len(line.arguments) == 2: # Bounce
  727. try:
  728. i = 0
  729. bounce_target = decode(line.arguments[i])
  730. i += 1
  731. bounce_message = decode(line.arguments[i])
  732. i += 1
  733. assert i == len(line.arguments)
  734. return Bounce(source=source, target=bounce_target, message=bounce_message)
  735. except Exception:
  736. pass
  737.  
  738. if line.command == 200 and len(line.arguments) == 9: # TraceLinkReply
  739. try:
  740. i = 0
  741. trace_link_reply_target = decode(line.arguments[i])
  742. i += 1
  743. # trace_link_reply_line.arguments[i]: 'Link'
  744. i += 1
  745. trace_link_reply_version = decode(line.arguments[i])
  746. i += 1
  747. trace_link_reply_destination = decode(line.arguments[i])
  748. i += 1
  749. trace_link_reply_next = decode(line.arguments[i])
  750. i += 1
  751. trace_link_reply_protocol_version = decode(line.arguments[i])
  752. i += 1
  753. trace_link_reply_link_uptime = decode(line.arguments[i])
  754. i += 1
  755. trace_link_reply_back_send_q = decode(line.arguments[i])
  756. i += 1
  757. trace_link_reply_up_send_q = decode(line.arguments[i])
  758. i += 1
  759. assert i == len(line.arguments)
  760. return TraceLinkReply(source=source, target=trace_link_reply_target, version=trace_link_reply_version, destination=trace_link_reply_destination, next=trace_link_reply_next, protocol_version=trace_link_reply_protocol_version, link_uptime=trace_link_reply_link_uptime, back_send_q=trace_link_reply_back_send_q, up_send_q=trace_link_reply_up_send_q)
  761. except Exception:
  762. pass
  763.  
  764. if line.command == 201 and len(line.arguments) == 4: # TraceConnecting
  765. try:
  766. i = 0
  767. trace_connecting_target = decode(line.arguments[i])
  768. i += 1
  769. # trace_connecting_line.arguments[i]: 'Try.'
  770. i += 1
  771. trace_connecting_cls = decode(line.arguments[i])
  772. i += 1
  773. trace_connecting_server = decode(line.arguments[i])
  774. i += 1
  775. assert i == len(line.arguments)
  776. return TraceConnecting(source=source, target=trace_connecting_target, cls=trace_connecting_cls, server=trace_connecting_server)
  777. except Exception:
  778. pass
  779.  
  780. if line.command == 202 and len(line.arguments) == 4: # TraceHandshake
  781. try:
  782. i = 0
  783. trace_handshake_target = decode(line.arguments[i])
  784. i += 1
  785. # trace_handshake_line.arguments[i]: 'H.S.'
  786. i += 1
  787. trace_handshake_cls = decode(line.arguments[i])
  788. i += 1
  789. trace_handshake_server = decode(line.arguments[i])
  790. i += 1
  791. assert i == len(line.arguments)
  792. return TraceHandshake(source=source, target=trace_handshake_target, cls=trace_handshake_cls, server=trace_handshake_server)
  793. except Exception:
  794. pass
  795.  
  796. if line.command == 203 and 3 <= len(line.arguments) <= 4: # TraceUnknown
  797. try:
  798. i = 0
  799. trace_unknown_target = decode(line.arguments[i])
  800. i += 1
  801. # trace_unknown_line.arguments[i]: '????'
  802. i += 1
  803. trace_unknown_cls = decode(line.arguments[i])
  804. i += 1
  805. if len(line.arguments) > 3:
  806. trace_unknown_ip = decode(line.arguments[i])
  807. i += 1
  808. else:
  809. trace_unknown_ip = None
  810. assert i == len(line.arguments)
  811. return TraceUnknown(source=source, target=trace_unknown_target, cls=trace_unknown_cls, ip=trace_unknown_ip)
  812. except Exception:
  813. pass
  814.  
  815. if line.command == 204 and len(line.arguments) == 4: # TraceOperator
  816. try:
  817. i = 0
  818. trace_operator_target = decode(line.arguments[i])
  819. i += 1
  820. # trace_operator_line.arguments[i]: 'Oper'
  821. i += 1
  822. trace_operator_cls = decode(line.arguments[i])
  823. i += 1
  824. trace_operator_nickname = decode(line.arguments[i])
  825. i += 1
  826. assert i == len(line.arguments)
  827. return TraceOperator(source=source, target=trace_operator_target, cls=trace_operator_cls, nickname=trace_operator_nickname)
  828. except Exception:
  829. pass
  830.  
  831. if line.command == 205 and len(line.arguments) == 4: # TraceUser
  832. try:
  833. i = 0
  834. trace_user_target = decode(line.arguments[i])
  835. i += 1
  836. # trace_user_line.arguments[i]: 'User'
  837. i += 1
  838. trace_user_cls = decode(line.arguments[i])
  839. i += 1
  840. trace_user_nickname = decode(line.arguments[i])
  841. i += 1
  842. assert i == len(line.arguments)
  843. return TraceUser(source=source, target=trace_user_target, cls=trace_user_cls, nickname=trace_user_nickname)
  844. except Exception:
  845. pass
  846.  
  847. if line.command == 206 and len(line.arguments) == 8: # TraceServer
  848. try:
  849. i = 0
  850. trace_server_target = decode(line.arguments[i])
  851. i += 1
  852. # trace_server_line.arguments[i]: 'Serv'
  853. i += 1
  854. trace_server_cls = decode(line.arguments[i])
  855. i += 1
  856. trace_server_s = decode(line.arguments[i])
  857. i += 1
  858. trace_server_c = decode(line.arguments[i])
  859. i += 1
  860. trace_server_server = decode(line.arguments[i])
  861. i += 1
  862. trace_server_hostmask = decode(line.arguments[i])
  863. i += 1
  864. trace_server_protocol_version = decode(line.arguments[i])
  865. i += 1
  866. assert i == len(line.arguments)
  867. return TraceServer(source=source, target=trace_server_target, cls=trace_server_cls, s=trace_server_s, c=trace_server_c, server=trace_server_server, hostmask=trace_server_hostmask, protocol_version=trace_server_protocol_version)
  868. except Exception:
  869. pass
  870.  
  871. if line.command == 207 and len(line.arguments) == 6: # TraceService
  872. try:
  873. i = 0
  874. trace_service_target = decode(line.arguments[i])
  875. i += 1
  876. # trace_service_line.arguments[i]: 'Service'
  877. i += 1
  878. trace_service_cls = decode(line.arguments[i])
  879. i += 1
  880. trace_service_name = decode(line.arguments[i])
  881. i += 1
  882. trace_service_type = decode(line.arguments[i])
  883. i += 1
  884. trace_service_active_type = decode(line.arguments[i])
  885. i += 1
  886. assert i == len(line.arguments)
  887. return TraceService(source=source, target=trace_service_target, cls=trace_service_cls, name=trace_service_name, type=trace_service_type, active_type=trace_service_active_type)
  888. except Exception:
  889. pass
  890.  
  891. if line.command == 208 and len(line.arguments) == 4: # TraceNewtype
  892. try:
  893. i = 0
  894. trace_newtype_target = decode(line.arguments[i])
  895. i += 1
  896. trace_newtype_newtype = decode(line.arguments[i])
  897. i += 1
  898. # trace_newtype_line.arguments[i]: '0'
  899. i += 1
  900. trace_newtype_name = decode(line.arguments[i])
  901. i += 1
  902. assert i == len(line.arguments)
  903. return TraceNewtype(source=source, target=trace_newtype_target, newtype=trace_newtype_newtype, name=trace_newtype_name)
  904. except Exception:
  905. pass
  906.  
  907. if line.command == 209 and len(line.arguments) == 4: # TraceClass
  908. try:
  909. i = 0
  910. trace_class_target = decode(line.arguments[i])
  911. i += 1
  912. # trace_class_line.arguments[i]: 'Class'
  913. i += 1
  914. trace_class_cls = decode(line.arguments[i])
  915. i += 1
  916. trace_class_count = int(line.arguments[i])
  917. i += 1
  918. assert i == len(line.arguments)
  919. return TraceClass(source=source, target=trace_class_target, cls=trace_class_cls, count=trace_class_count)
  920. except Exception:
  921. pass
  922.  
  923. if line.command == 211 and len(line.arguments) == 8: # StatsLinkInfo
  924. try:
  925. i = 0
  926. stats_link_info_target = decode(line.arguments[i])
  927. i += 1
  928. stats_link_info_name = decode(line.arguments[i])
  929. i += 1
  930. stats_link_info_sendq = decode(line.arguments[i])
  931. i += 1
  932. stats_link_info_sent_messages = int(line.arguments[i])
  933. i += 1
  934. stats_link_info_sent_kbytes = int(line.arguments[i])
  935. i += 1
  936. stats_link_info_recv_messages = int(line.arguments[i])
  937. i += 1
  938. stats_link_info_recv_kbytes = int(line.arguments[i])
  939. i += 1
  940. stats_link_info_uptime = int(line.arguments[i])
  941. i += 1
  942. assert i == len(line.arguments)
  943. return StatsLinkInfo(source=source, target=stats_link_info_target, name=stats_link_info_name, sendq=stats_link_info_sendq, sent_messages=stats_link_info_sent_messages, sent_kbytes=stats_link_info_sent_kbytes, recv_messages=stats_link_info_recv_messages, recv_kbytes=stats_link_info_recv_kbytes, uptime=stats_link_info_uptime)
  944. except Exception:
  945. pass
  946.  
  947. if line.command == 212 and len(line.arguments) == 5: # StatsCommands
  948. try:
  949. i = 0
  950. stats_commands_target = decode(line.arguments[i])
  951. i += 1
  952. stats_commands_command = decode(line.arguments[i])
  953. i += 1
  954. stats_commands_count = int(line.arguments[i])
  955. i += 1
  956. stats_commands_bytecount = int(line.arguments[i])
  957. i += 1
  958. stats_commands_remote_count = int(line.arguments[i])
  959. i += 1
  960. assert i == len(line.arguments)
  961. return StatsCommands(source=source, target=stats_commands_target, command=stats_commands_command, count=stats_commands_count, bytecount=stats_commands_bytecount, remote_count=stats_commands_remote_count)
  962. except Exception:
  963. pass
  964.  
  965. if line.command == 219 and len(line.arguments) == 3: # StatsEnd
  966. try:
  967. i = 0
  968. stats_end_target = decode(line.arguments[i])
  969. i += 1
  970. stats_end_letter = decode(line.arguments[i])
  971. i += 1
  972. # stats_end_line.arguments[i]: 'End of STATS report'
  973. i += 1
  974. assert i == len(line.arguments)
  975. return StatsEnd(source=source, target=stats_end_target, letter=stats_end_letter)
  976. except Exception:
  977. pass
  978.  
  979. if line.command == 221 and len(line.arguments) == 2: # UserModeIs
  980. try:
  981. i = 0
  982. user_mode_is_target = decode(line.arguments[i])
  983. i += 1
  984. user_mode_is_mode = decode(line.arguments[i])
  985. i += 1
  986. assert i == len(line.arguments)
  987. return UserModeIs(source=source, target=user_mode_is_target, mode=user_mode_is_mode)
  988. except Exception:
  989. pass
  990.  
  991. if line.command == 234 and len(line.arguments) == 7: # ServListReply
  992. try:
  993. i = 0
  994. serv_list_reply_target = decode(line.arguments[i])
  995. i += 1
  996. serv_list_reply_name = decode(line.arguments[i])
  997. i += 1
  998. serv_list_reply_server = decode(line.arguments[i])
  999. i += 1
  1000. serv_list_reply_mask = decode(line.arguments[i])
  1001. i += 1
  1002. serv_list_reply_type = decode(line.arguments[i])
  1003. i += 1
  1004. serv_list_reply_hopcount = int(line.arguments[i])
  1005. i += 1
  1006. serv_list_reply_info = decode(line.arguments[i])
  1007. i += 1
  1008. assert i == len(line.arguments)
  1009. return ServListReply(source=source, target=serv_list_reply_target, name=serv_list_reply_name, server=serv_list_reply_server, mask=serv_list_reply_mask, type=serv_list_reply_type, hopcount=serv_list_reply_hopcount, info=serv_list_reply_info)
  1010. except Exception:
  1011. pass
  1012.  
  1013. if line.command == 235 and len(line.arguments) == 4: # ServListEnd
  1014. try:
  1015. i = 0
  1016. serv_list_end_target = decode(line.arguments[i])
  1017. i += 1
  1018. serv_list_end_mask = decode(line.arguments[i])
  1019. i += 1
  1020. serv_list_end_type = decode(line.arguments[i])
  1021. i += 1
  1022. # serv_list_end_line.arguments[i]: 'End of service listing'
  1023. i += 1
  1024. assert i == len(line.arguments)
  1025. return ServListEnd(source=source, target=serv_list_end_target, mask=serv_list_end_mask, type=serv_list_end_type)
  1026. except Exception:
  1027. pass
  1028.  
  1029. if line.command == 242 and len(line.arguments) == 2: # StatsUptime
  1030. try:
  1031. i = 0
  1032. stats_uptime_target = decode(line.arguments[i])
  1033. i += 1
  1034. stats_uptime_message = decode(line.arguments[i])
  1035. i += 1
  1036. assert i == len(line.arguments)
  1037. return StatsUptime(source=source, target=stats_uptime_target, message=stats_uptime_message)
  1038. except Exception:
  1039. pass
  1040.  
  1041. if line.command == 243 and len(line.arguments) == 5: # StatsOline
  1042. try:
  1043. i = 0
  1044. stats_oline_target = decode(line.arguments[i])
  1045. i += 1
  1046. # stats_oline_line.arguments[i]: 'O'
  1047. i += 1
  1048. stats_oline_hostmask = decode(line.arguments[i])
  1049. i += 1
  1050. # stats_oline_line.arguments[i]: '*'
  1051. i += 1
  1052. stats_oline_name = decode(line.arguments[i])
  1053. i += 1
  1054. assert i == len(line.arguments)
  1055. return StatsOline(source=source, target=stats_oline_target, hostmask=stats_oline_hostmask, name=stats_oline_name)
  1056. except Exception:
  1057. pass
  1058.  
  1059. if line.command == 251 and len(line.arguments) == 2: # LuserClient
  1060. try:
  1061. i = 0
  1062. luser_client_target = decode(line.arguments[i])
  1063. i += 1
  1064. luser_client_message = decode(line.arguments[i])
  1065. i += 1
  1066. assert i == len(line.arguments)
  1067. return LuserClient(source=source, target=luser_client_target, message=luser_client_message)
  1068. except Exception:
  1069. pass
  1070.  
  1071. if line.command == 252 and len(line.arguments) == 3: # LuserOp
  1072. try:
  1073. i = 0
  1074. luser_op_target = decode(line.arguments[i])
  1075. i += 1
  1076. luser_op_count = int(line.arguments[i])
  1077. i += 1
  1078. # luser_op_line.arguments[i]: 'operator(s) online'
  1079. i += 1
  1080. assert i == len(line.arguments)
  1081. return LuserOp(source=source, target=luser_op_target, count=luser_op_count)
  1082. except Exception:
  1083. pass
  1084.  
  1085. if line.command == 253 and len(line.arguments) == 3: # LuserUnknown
  1086. try:
  1087. i = 0
  1088. luser_unknown_target = decode(line.arguments[i])
  1089. i += 1
  1090. luser_unknown_count = int(line.arguments[i])
  1091. i += 1
  1092. # luser_unknown_line.arguments[i]: 'unknown connection(s)'
  1093. i += 1
  1094. assert i == len(line.arguments)
  1095. return LuserUnknown(source=source, target=luser_unknown_target, count=luser_unknown_count)
  1096. except Exception:
  1097. pass
  1098.  
  1099. if line.command == 254 and len(line.arguments) == 3: # LuserChannels
  1100. try:
  1101. i = 0
  1102. luser_channels_target = decode(line.arguments[i])
  1103. i += 1
  1104. luser_channels_count = int(line.arguments[i])
  1105. i += 1
  1106. # luser_channels_line.arguments[i]: 'channels formed'
  1107. i += 1
  1108. assert i == len(line.arguments)
  1109. return LuserChannels(source=source, target=luser_channels_target, count=luser_channels_count)
  1110. except Exception:
  1111. pass
  1112.  
  1113. if line.command == 255 and len(line.arguments) == 2: # LuserMe
  1114. try:
  1115. i = 0
  1116. luser_me_target = decode(line.arguments[i])
  1117. i += 1
  1118. luser_me_message = decode(line.arguments[i])
  1119. i += 1
  1120. assert i == len(line.arguments)
  1121. return LuserMe(source=source, target=luser_me_target, message=luser_me_message)
  1122. except Exception:
  1123. pass
  1124.  
  1125. if line.command == 256 and len(line.arguments) == 3: # AdminMe
  1126. try:
  1127. i = 0
  1128. admin_me_target = decode(line.arguments[i])
  1129. i += 1
  1130. admin_me_server = decode(line.arguments[i])
  1131. i += 1
  1132. # admin_me_line.arguments[i]: 'Administrative info'
  1133. i += 1
  1134. assert i == len(line.arguments)
  1135. return AdminMe(source=source, target=admin_me_target, server=admin_me_server)
  1136. except Exception:
  1137. pass
  1138.  
  1139. if line.command == 257 and len(line.arguments) == 2: # AdminLoc1
  1140. try:
  1141. i = 0
  1142. admin_loc1_target = decode(line.arguments[i])
  1143. i += 1
  1144. admin_loc1_message = decode(line.arguments[i])
  1145. i += 1
  1146. assert i == len(line.arguments)
  1147. return AdminLoc1(source=source, target=admin_loc1_target, message=admin_loc1_message)
  1148. except Exception:
  1149. pass
  1150.  
  1151. if line.command == 258 and len(line.arguments) == 2: # AdminLoc2
  1152. try:
  1153. i = 0
  1154. admin_loc2_target = decode(line.arguments[i])
  1155. i += 1
  1156. admin_loc2_message = decode(line.arguments[i])
  1157. i += 1
  1158. assert i == len(line.arguments)
  1159. return AdminLoc2(source=source, target=admin_loc2_target, message=admin_loc2_message)
  1160. except Exception:
  1161. pass
  1162.  
  1163. if line.command == 259 and len(line.arguments) == 2: # AdminEmail
  1164. try:
  1165. i = 0
  1166. admin_email_target = decode(line.arguments[i])
  1167. i += 1
  1168. admin_email_email = decode(line.arguments[i])
  1169. i += 1
  1170. assert i == len(line.arguments)
  1171. return AdminEmail(source=source, target=admin_email_target, email=admin_email_email)
  1172. except Exception:
  1173. pass
  1174.  
  1175. if line.command == 261 and len(line.arguments) == 4: # TraceLog
  1176. try:
  1177. i = 0
  1178. trace_log_target = decode(line.arguments[i])
  1179. i += 1
  1180. # trace_log_line.arguments[i]: 'File'
  1181. i += 1
  1182. trace_log_logfile = decode(line.arguments[i])
  1183. i += 1
  1184. trace_log_debug_level = decode(line.arguments[i])
  1185. i += 1
  1186. assert i == len(line.arguments)
  1187. return TraceLog(source=source, target=trace_log_target, logfile=trace_log_logfile, debug_level=trace_log_debug_level)
  1188. except Exception:
  1189. pass
  1190.  
  1191. if line.command == 262 and len(line.arguments) == 4: # TraceEnd
  1192. try:
  1193. i = 0
  1194. trace_end_target = decode(line.arguments[i])
  1195. i += 1
  1196. trace_end_server = decode(line.arguments[i])
  1197. i += 1
  1198. trace_end_version = decode(line.arguments[i])
  1199. i += 1
  1200. # trace_end_line.arguments[i]: 'End of TRACE'
  1201. i += 1
  1202. assert i == len(line.arguments)
  1203. return TraceEnd(source=source, target=trace_end_target, server=trace_end_server, version=trace_end_version)
  1204. except Exception:
  1205. pass
  1206.  
  1207. if line.command == 263 and len(line.arguments) == 3: # TryAgain
  1208. try:
  1209. i = 0
  1210. try_again_target = decode(line.arguments[i])
  1211. i += 1
  1212. try_again_command = decode(line.arguments[i])
  1213. i += 1
  1214. # try_again_line.arguments[i]: 'Please wait a while and try again.'
  1215. i += 1
  1216. assert i == len(line.arguments)
  1217. return TryAgain(source=source, target=try_again_target, command=try_again_command)
  1218. except Exception:
  1219. pass
  1220.  
  1221. if line.command == 301 and len(line.arguments) == 3: # AwayReply
  1222. try:
  1223. i = 0
  1224. away_reply_target = decode(line.arguments[i])
  1225. i += 1
  1226. away_reply_nickname = decode(line.arguments[i])
  1227. i += 1
  1228. away_reply_message = decode(line.arguments[i])
  1229. i += 1
  1230. assert i == len(line.arguments)
  1231. return AwayReply(source=source, target=away_reply_target, nickname=away_reply_nickname, message=away_reply_message)
  1232. except Exception:
  1233. pass
  1234.  
  1235. if line.command == 302 and len(line.arguments) == 2: # UserHostReply
  1236. try:
  1237. i = 0
  1238. user_host_reply_target = decode(line.arguments[i])
  1239. i += 1
  1240. user_host_reply_message = decode(line.arguments[i])
  1241. i += 1
  1242. assert i == len(line.arguments)
  1243. return UserHostReply(source=source, target=user_host_reply_target, message=user_host_reply_message)
  1244. except Exception:
  1245. pass
  1246.  
  1247. if line.command == 303 and len(line.arguments) == 2: # IsOnReply
  1248. try:
  1249. i = 0
  1250. is_on_reply_target = decode(line.arguments[i])
  1251. i += 1
  1252. is_on_reply_message = decode(line.arguments[i])
  1253. i += 1
  1254. assert i == len(line.arguments)
  1255. return IsOnReply(source=source, target=is_on_reply_target, message=is_on_reply_message)
  1256. except Exception:
  1257. pass
  1258.  
  1259. if line.command == 305 and len(line.arguments) == 2: # UnawayReply
  1260. try:
  1261. i = 0
  1262. unaway_reply_target = decode(line.arguments[i])
  1263. i += 1
  1264. # unaway_reply_line.arguments[i]: 'You are no longer marked as being away'
  1265. i += 1
  1266. assert i == len(line.arguments)
  1267. return UnawayReply(source=source, target=unaway_reply_target)
  1268. except Exception:
  1269. pass
  1270.  
  1271. if line.command == 306 and len(line.arguments) == 2: # NowAwayReply
  1272. try:
  1273. i = 0
  1274. now_away_reply_target = decode(line.arguments[i])
  1275. i += 1
  1276. # now_away_reply_line.arguments[i]: 'You have been marked as being away'
  1277. i += 1
  1278. assert i == len(line.arguments)
  1279. return NowAwayReply(source=source, target=now_away_reply_target)
  1280. except Exception:
  1281. pass
  1282.  
  1283. if line.command == 311 and len(line.arguments) == 6: # WhoIsUser
  1284. try:
  1285. i = 0
  1286. who_is_user_target = decode(line.arguments[i])
  1287. i += 1
  1288. who_is_user_nickname = decode(line.arguments[i])
  1289. i += 1
  1290. who_is_user_user = decode(line.arguments[i])
  1291. i += 1
  1292. who_is_user_host = decode(line.arguments[i])
  1293. i += 1
  1294. # who_is_user_line.arguments[i]: '*'
  1295. i += 1
  1296. who_is_user_realname = decode(line.arguments[i])
  1297. i += 1
  1298. assert i == len(line.arguments)
  1299. return WhoIsUser(source=source, target=who_is_user_target, nickname=who_is_user_nickname, user=who_is_user_user, host=who_is_user_host, realname=who_is_user_realname)
  1300. except Exception:
  1301. pass
  1302.  
  1303. if line.command == 312 and len(line.arguments) == 4: # WhoIsServer
  1304. try:
  1305. i = 0
  1306. who_is_server_target = decode(line.arguments[i])
  1307. i += 1
  1308. who_is_server_nickname = decode(line.arguments[i])
  1309. i += 1
  1310. who_is_server_server = decode(line.arguments[i])
  1311. i += 1
  1312. who_is_server_info = decode(line.arguments[i])
  1313. i += 1
  1314. assert i == len(line.arguments)
  1315. return WhoIsServer(source=source, target=who_is_server_target, nickname=who_is_server_nickname, server=who_is_server_server, info=who_is_server_info)
  1316. except Exception:
  1317. pass
  1318.  
  1319. if line.command == 313 and len(line.arguments) == 3: # WhoIsOperator
  1320. try:
  1321. i = 0
  1322. who_is_operator_target = decode(line.arguments[i])
  1323. i += 1
  1324. who_is_operator_nickname = decode(line.arguments[i])
  1325. i += 1
  1326. # who_is_operator_line.arguments[i]: 'is an IRC operator'
  1327. i += 1
  1328. assert i == len(line.arguments)
  1329. return WhoIsOperator(source=source, target=who_is_operator_target, nickname=who_is_operator_nickname)
  1330. except Exception:
  1331. pass
  1332.  
  1333. if line.command == 314 and len(line.arguments) == 6: # WhoWasUser
  1334. try:
  1335. i = 0
  1336. who_was_user_target = decode(line.arguments[i])
  1337. i += 1
  1338. who_was_user_nickname = decode(line.arguments[i])
  1339. i += 1
  1340. who_was_user_user = decode(line.arguments[i])
  1341. i += 1
  1342. who_was_user_host = decode(line.arguments[i])
  1343. i += 1
  1344. # who_was_user_line.arguments[i]: '*'
  1345. i += 1
  1346. who_was_user_realname = decode(line.arguments[i])
  1347. i += 1
  1348. assert i == len(line.arguments)
  1349. return WhoWasUser(source=source, target=who_was_user_target, nickname=who_was_user_nickname, user=who_was_user_user, host=who_was_user_host, realname=who_was_user_realname)
  1350. except Exception:
  1351. pass
  1352.  
  1353. if line.command == 315 and len(line.arguments) == 3: # WhoEnd
  1354. try:
  1355. i = 0
  1356. who_end_target = decode(line.arguments[i])
  1357. i += 1
  1358. who_end_name = decode(line.arguments[i])
  1359. i += 1
  1360. # who_end_line.arguments[i]: 'End of WHO list'
  1361. i += 1
  1362. assert i == len(line.arguments)
  1363. return WhoEnd(source=source, target=who_end_target, name=who_end_name)
  1364. except Exception:
  1365. pass
  1366.  
  1367. if line.command == 317 and len(line.arguments) == 4: # WhoIsIdle
  1368. try:
  1369. i = 0
  1370. who_is_idle_target = decode(line.arguments[i])
  1371. i += 1
  1372. who_is_idle_nickname = decode(line.arguments[i])
  1373. i += 1
  1374. who_is_idle_time = int(line.arguments[i])
  1375. i += 1
  1376. # who_is_idle_line.arguments[i]: 'seconds idle'
  1377. i += 1
  1378. assert i == len(line.arguments)
  1379. return WhoIsIdle(source=source, target=who_is_idle_target, nickname=who_is_idle_nickname, time=who_is_idle_time)
  1380. except Exception:
  1381. pass
  1382.  
  1383. if line.command == 318 and len(line.arguments) == 3: # WhoIsEnd
  1384. try:
  1385. i = 0
  1386. who_is_end_target = decode(line.arguments[i])
  1387. i += 1
  1388. who_is_end_nickname = decode(line.arguments[i])
  1389. i += 1
  1390. # who_is_end_line.arguments[i]: 'End of WHOIS list'
  1391. i += 1
  1392. assert i == len(line.arguments)
  1393. return WhoIsEnd(source=source, target=who_is_end_target, nickname=who_is_end_nickname)
  1394. except Exception:
  1395. pass
  1396.  
  1397. if line.command == 319 and len(line.arguments) == 3: # WhoIsChannels
  1398. try:
  1399. i = 0
  1400. who_is_channels_target = decode(line.arguments[i])
  1401. i += 1
  1402. who_is_channels_nickname = decode(line.arguments[i])
  1403. i += 1
  1404. who_is_channels_channels = decode(line.arguments[i])
  1405. i += 1
  1406. assert i == len(line.arguments)
  1407. return WhoIsChannels(source=source, target=who_is_channels_target, nickname=who_is_channels_nickname, channels=who_is_channels_channels)
  1408. except Exception:
  1409. pass
  1410.  
  1411. if line.command == 322 and len(line.arguments) == 4: # ListReply
  1412. try:
  1413. i = 0
  1414. list_reply_target = decode(line.arguments[i])
  1415. i += 1
  1416. list_reply_channel = decode(line.arguments[i])
  1417. i += 1
  1418. list_reply_visible = int(line.arguments[i])
  1419. i += 1
  1420. list_reply_topic = decode(line.arguments[i])
  1421. i += 1
  1422. assert i == len(line.arguments)
  1423. return ListReply(source=source, target=list_reply_target, channel=list_reply_channel, visible=list_reply_visible, topic=list_reply_topic)
  1424. except Exception:
  1425. pass
  1426.  
  1427. if line.command == 323 and len(line.arguments) == 2: # ListEnd
  1428. try:
  1429. i = 0
  1430. list_end_target = decode(line.arguments[i])
  1431. i += 1
  1432. # list_end_line.arguments[i]: 'End of LIST'
  1433. i += 1
  1434. assert i == len(line.arguments)
  1435. return ListEnd(source=source, target=list_end_target)
  1436. except Exception:
  1437. pass
  1438.  
  1439. if line.command == 324 and len(line.arguments) == 4: # ChannelModeIs
  1440. try:
  1441. i = 0
  1442. channel_mode_is_target = decode(line.arguments[i])
  1443. i += 1
  1444. channel_mode_is_channel = decode(line.arguments[i])
  1445. i += 1
  1446. channel_mode_is_mode = decode(line.arguments[i])
  1447. i += 1
  1448. channel_mode_is_params = decode(line.arguments[i])
  1449. i += 1
  1450. assert i == len(line.arguments)
  1451. return ChannelModeIs(source=source, target=channel_mode_is_target, channel=channel_mode_is_channel, mode=channel_mode_is_mode, params=channel_mode_is_params)
  1452. except Exception:
  1453. pass
  1454.  
  1455. if line.command == 325 and len(line.arguments) == 3: # UniqOpIs
  1456. try:
  1457. i = 0
  1458. uniq_op_is_target = decode(line.arguments[i])
  1459. i += 1
  1460. uniq_op_is_channel = decode(line.arguments[i])
  1461. i += 1
  1462. uniq_op_is_nickname = decode(line.arguments[i])
  1463. i += 1
  1464. assert i == len(line.arguments)
  1465. return UniqOpIs(source=source, target=uniq_op_is_target, channel=uniq_op_is_channel, nickname=uniq_op_is_nickname)
  1466. except Exception:
  1467. pass
  1468.  
  1469. if line.command == 331 and len(line.arguments) == 3: # NoTopicReply
  1470. try:
  1471. i = 0
  1472. no_topic_reply_target = decode(line.arguments[i])
  1473. i += 1
  1474. no_topic_reply_channel = decode(line.arguments[i])
  1475. i += 1
  1476. # no_topic_reply_line.arguments[i]: 'No topic is set'
  1477. i += 1
  1478. assert i == len(line.arguments)
  1479. return NoTopicReply(source=source, target=no_topic_reply_target, channel=no_topic_reply_channel)
  1480. except Exception:
  1481. pass
  1482.  
  1483. if line.command == 332 and len(line.arguments) == 3: # TopicReply
  1484. try:
  1485. i = 0
  1486. topic_reply_target = decode(line.arguments[i])
  1487. i += 1
  1488. topic_reply_channel = decode(line.arguments[i])
  1489. i += 1
  1490. topic_reply_topic = decode(line.arguments[i])
  1491. i += 1
  1492. assert i == len(line.arguments)
  1493. return TopicReply(source=source, target=topic_reply_target, channel=topic_reply_channel, topic=topic_reply_topic)
  1494. except Exception:
  1495. pass
  1496.  
  1497. if line.command == 341 and len(line.arguments) == 3: # Inviting
  1498. try:
  1499. i = 0
  1500. inviting_target = decode(line.arguments[i])
  1501. i += 1
  1502. inviting_channel = decode(line.arguments[i])
  1503. i += 1
  1504. inviting_nick = decode(line.arguments[i])
  1505. i += 1
  1506. assert i == len(line.arguments)
  1507. return Inviting(source=source, target=inviting_target, channel=inviting_channel, nick=inviting_nick)
  1508. except Exception:
  1509. pass
  1510.  
  1511. if line.command == 342 and len(line.arguments) == 3: # Summoning
  1512. try:
  1513. i = 0
  1514. summoning_target = decode(line.arguments[i])
  1515. i += 1
  1516. summoning_user = decode(line.arguments[i])
  1517. i += 1
  1518. # summoning_line.arguments[i]: 'Summoning user to IRC'
  1519. i += 1
  1520. assert i == len(line.arguments)
  1521. return Summoning(source=source, target=summoning_target, user=summoning_user)
  1522. except Exception:
  1523. pass
  1524.  
  1525. if line.command == 346 and len(line.arguments) == 3: # InviteList
  1526. try:
  1527. i = 0
  1528. invite_list_target = decode(line.arguments[i])
  1529. i += 1
  1530. invite_list_channel = decode(line.arguments[i])
  1531. i += 1
  1532. invite_list_mask = decode(line.arguments[i])
  1533. i += 1
  1534. assert i == len(line.arguments)
  1535. return InviteList(source=source, target=invite_list_target, channel=invite_list_channel, mask=invite_list_mask)
  1536. except Exception:
  1537. pass
  1538.  
  1539. if line.command == 347 and len(line.arguments) == 3: # InviteListEnd
  1540. try:
  1541. i = 0
  1542. invite_list_end_target = decode(line.arguments[i])
  1543. i += 1
  1544. invite_list_end_channel = decode(line.arguments[i])
  1545. i += 1
  1546. # invite_list_end_line.arguments[i]: 'End of channel invite list'
  1547. i += 1
  1548. assert i == len(line.arguments)
  1549. return InviteListEnd(source=source, target=invite_list_end_target, channel=invite_list_end_channel)
  1550. except Exception:
  1551. pass
  1552.  
  1553. if line.command == 348 and len(line.arguments) == 3: # ExceptList
  1554. try:
  1555. i = 0
  1556. except_list_target = decode(line.arguments[i])
  1557. i += 1
  1558. except_list_channel = decode(line.arguments[i])
  1559. i += 1
  1560. except_list_mask = decode(line.arguments[i])
  1561. i += 1
  1562. assert i == len(line.arguments)
  1563. return ExceptList(source=source, target=except_list_target, channel=except_list_channel, mask=except_list_mask)
  1564. except Exception:
  1565. pass
  1566.  
  1567. if line.command == 349 and len(line.arguments) == 3: # ExceptListEnd
  1568. try:
  1569. i = 0
  1570. except_list_end_target = decode(line.arguments[i])
  1571. i += 1
  1572. except_list_end_channel = decode(line.arguments[i])
  1573. i += 1
  1574. # except_list_end_line.arguments[i]: 'End of channel exception list'
  1575. i += 1
  1576. assert i == len(line.arguments)
  1577. return ExceptListEnd(source=source, target=except_list_end_target, channel=except_list_end_channel)
  1578. except Exception:
  1579. pass
  1580.  
  1581. if line.command == 351 and len(line.arguments) == 4: # VersionReply
  1582. try:
  1583. i = 0
  1584. version_reply_target = decode(line.arguments[i])
  1585. i += 1
  1586. version_reply_version = decode(line.arguments[i])
  1587. i += 1
  1588. version_reply_server = decode(line.arguments[i])
  1589. i += 1
  1590. version_reply_comments = decode(line.arguments[i])
  1591. i += 1
  1592. assert i == len(line.arguments)
  1593. return VersionReply(source=source, target=version_reply_target, version=version_reply_version, server=version_reply_server, comments=version_reply_comments)
  1594. except Exception:
  1595. pass
  1596.  
  1597. if line.command == 352 and len(line.arguments) == 8: # WhoReply
  1598. try:
  1599. i = 0
  1600. who_reply_target = decode(line.arguments[i])
  1601. i += 1
  1602. who_reply_channel = decode(line.arguments[i])
  1603. i += 1
  1604. who_reply_user = decode(line.arguments[i])
  1605. i += 1
  1606. who_reply_host = decode(line.arguments[i])
  1607. i += 1
  1608. who_reply_server = decode(line.arguments[i])
  1609. i += 1
  1610. who_reply_nickname = decode(line.arguments[i])
  1611. i += 1
  1612. who_reply_props = decode(line.arguments[i])
  1613. i += 1
  1614. who_reply_realname = decode(line.arguments[i])
  1615. i += 1
  1616. assert i == len(line.arguments)
  1617. return WhoReply(source=source, target=who_reply_target, channel=who_reply_channel, user=who_reply_user, host=who_reply_host, server=who_reply_server, nickname=who_reply_nickname, props=who_reply_props, realname=who_reply_realname)
  1618. except Exception:
  1619. pass
  1620.  
  1621. if line.command == 353 and len(line.arguments) == 4: # NamesReply
  1622. try:
  1623. i = 0
  1624. names_reply_target = decode(line.arguments[i])
  1625. i += 1
  1626. names_reply_mode = decode(line.arguments[i])
  1627. i += 1
  1628. names_reply_channel = decode(line.arguments[i])
  1629. i += 1
  1630. names_reply_nicknames = [decode(x) for x in line.arguments[i].split()]
  1631. i += 1
  1632. assert i == len(line.arguments)
  1633. return NamesReply(source=source, target=names_reply_target, mode=names_reply_mode, channel=names_reply_channel, nicknames=names_reply_nicknames)
  1634. except Exception:
  1635. pass
  1636.  
  1637. if line.command == 364 and len(line.arguments) == 4: # LinksReply
  1638. try:
  1639. i = 0
  1640. links_reply_target = decode(line.arguments[i])
  1641. i += 1
  1642. links_reply_mask = decode(line.arguments[i])
  1643. i += 1
  1644. links_reply_server = decode(line.arguments[i])
  1645. i += 1
  1646. links_reply_info = decode(line.arguments[i])
  1647. i += 1
  1648. assert i == len(line.arguments)
  1649. return LinksReply(source=source, target=links_reply_target, mask=links_reply_mask, server=links_reply_server, info=links_reply_info)
  1650. except Exception:
  1651. pass
  1652.  
  1653. if line.command == 365 and len(line.arguments) == 3: # LinksEnd
  1654. try:
  1655. i = 0
  1656. links_end_target = decode(line.arguments[i])
  1657. i += 1
  1658. links_end_mask = decode(line.arguments[i])
  1659. i += 1
  1660. # links_end_line.arguments[i]: 'End of LINKS list'
  1661. i += 1
  1662. assert i == len(line.arguments)
  1663. return LinksEnd(source=source, target=links_end_target, mask=links_end_mask)
  1664. except Exception:
  1665. pass
  1666.  
  1667. if line.command == 366 and len(line.arguments) == 3: # NamesEnd
  1668. try:
  1669. i = 0
  1670. names_end_target = decode(line.arguments[i])
  1671. i += 1
  1672. names_end_channel = decode(line.arguments[i])
  1673. i += 1
  1674. # names_end_line.arguments[i]: 'End of NAMES list'
  1675. i += 1
  1676. assert i == len(line.arguments)
  1677. return NamesEnd(source=source, target=names_end_target, channel=names_end_channel)
  1678. except Exception:
  1679. pass
  1680.  
  1681. if line.command == 367 and len(line.arguments) == 3: # BanList
  1682. try:
  1683. i = 0
  1684. ban_list_target = decode(line.arguments[i])
  1685. i += 1
  1686. ban_list_channel = decode(line.arguments[i])
  1687. i += 1
  1688. ban_list_mask = decode(line.arguments[i])
  1689. i += 1
  1690. assert i == len(line.arguments)
  1691. return BanList(source=source, target=ban_list_target, channel=ban_list_channel, mask=ban_list_mask)
  1692. except Exception:
  1693. pass
  1694.  
  1695. if line.command == 368 and len(line.arguments) == 3: # BanListEnd
  1696. try:
  1697. i = 0
  1698. ban_list_end_target = decode(line.arguments[i])
  1699. i += 1
  1700. ban_list_end_channel = decode(line.arguments[i])
  1701. i += 1
  1702. # ban_list_end_line.arguments[i]: 'End of channel ban list'
  1703. i += 1
  1704. assert i == len(line.arguments)
  1705. return BanListEnd(source=source, target=ban_list_end_target, channel=ban_list_end_channel)
  1706. except Exception:
  1707. pass
  1708.  
  1709. if line.command == 369 and len(line.arguments) == 3: # WhoWasEnd
  1710. try:
  1711. i = 0
  1712. who_was_end_target = decode(line.arguments[i])
  1713. i += 1
  1714. who_was_end_nickname = decode(line.arguments[i])
  1715. i += 1
  1716. # who_was_end_line.arguments[i]: 'End of WHOWAS'
  1717. i += 1
  1718. assert i == len(line.arguments)
  1719. return WhoWasEnd(source=source, target=who_was_end_target, nickname=who_was_end_nickname)
  1720. except Exception:
  1721. pass
  1722.  
  1723. if line.command == 371 and len(line.arguments) == 2: # InfoReply
  1724. try:
  1725. i = 0
  1726. info_reply_target = decode(line.arguments[i])
  1727. i += 1
  1728. info_reply_info = decode(line.arguments[i])
  1729. i += 1
  1730. assert i == len(line.arguments)
  1731. return InfoReply(source=source, target=info_reply_target, info=info_reply_info)
  1732. except Exception:
  1733. pass
  1734.  
  1735. if line.command == 372 and len(line.arguments) == 2: # MotdText
  1736. try:
  1737. i = 0
  1738. motd_text_target = decode(line.arguments[i])
  1739. i += 1
  1740. motd_text_message = decode(line.arguments[i])
  1741. i += 1
  1742. assert i == len(line.arguments)
  1743. return MotdText(source=source, target=motd_text_target, message=motd_text_message)
  1744. except Exception:
  1745. pass
  1746.  
  1747. if line.command == 374 and len(line.arguments) == 2: # InfoEnd
  1748. try:
  1749. i = 0
  1750. info_end_target = decode(line.arguments[i])
  1751. i += 1
  1752. # info_end_line.arguments[i]: 'End of INFO list'
  1753. i += 1
  1754. assert i == len(line.arguments)
  1755. return InfoEnd(source=source, target=info_end_target)
  1756. except Exception:
  1757. pass
  1758.  
  1759. if line.command == 375 and len(line.arguments) == 2: # MotdStart
  1760. try:
  1761. i = 0
  1762. motd_start_target = decode(line.arguments[i])
  1763. i += 1
  1764. motd_start_message = decode(line.arguments[i])
  1765. i += 1
  1766. assert i == len(line.arguments)
  1767. return MotdStart(source=source, target=motd_start_target, message=motd_start_message)
  1768. except Exception:
  1769. pass
  1770.  
  1771. if line.command == 376 and len(line.arguments) == 2: # MotdEnd
  1772. try:
  1773. i = 0
  1774. motd_end_target = decode(line.arguments[i])
  1775. i += 1
  1776. # motd_end_line.arguments[i]: 'End of MOTD command'
  1777. i += 1
  1778. assert i == len(line.arguments)
  1779. return MotdEnd(source=source, target=motd_end_target)
  1780. except Exception:
  1781. pass
  1782.  
  1783. if line.command == 381 and len(line.arguments) == 2: # YoureOper
  1784. try:
  1785. i = 0
  1786. youre_oper_target = decode(line.arguments[i])
  1787. i += 1
  1788. # youre_oper_line.arguments[i]: 'You are now an IRC operator'
  1789. i += 1
  1790. assert i == len(line.arguments)
  1791. return YoureOper(source=source, target=youre_oper_target)
  1792. except Exception:
  1793. pass
  1794.  
  1795. if line.command == 382 and len(line.arguments) == 3: # Rehashing
  1796. try:
  1797. i = 0
  1798. rehashing_target = decode(line.arguments[i])
  1799. i += 1
  1800. rehashing_file = decode(line.arguments[i])
  1801. i += 1
  1802. # rehashing_line.arguments[i]: 'Rehashing'
  1803. i += 1
  1804. assert i == len(line.arguments)
  1805. return Rehashing(source=source, target=rehashing_target, file=rehashing_file)
  1806. except Exception:
  1807. pass
  1808.  
  1809. if line.command == 383 and len(line.arguments) == 2: # YoureService
  1810. try:
  1811. i = 0
  1812. youre_service_target = decode(line.arguments[i])
  1813. i += 1
  1814. youre_service_message = decode(line.arguments[i])
  1815. i += 1
  1816. assert i == len(line.arguments)
  1817. return YoureService(source=source, target=youre_service_target, message=youre_service_message)
  1818. except Exception:
  1819. pass
  1820.  
  1821. if line.command == 391 and len(line.arguments) == 3: # TimeReply
  1822. try:
  1823. i = 0
  1824. time_reply_target = decode(line.arguments[i])
  1825. i += 1
  1826. time_reply_server = decode(line.arguments[i])
  1827. i += 1
  1828. time_reply_time = decode(line.arguments[i])
  1829. i += 1
  1830. assert i == len(line.arguments)
  1831. return TimeReply(source=source, target=time_reply_target, server=time_reply_server, time=time_reply_time)
  1832. except Exception:
  1833. pass
  1834.  
  1835. if line.command == 392 and len(line.arguments) == 2: # UsersStart
  1836. try:
  1837. i = 0
  1838. users_start_target = decode(line.arguments[i])
  1839. i += 1
  1840. # users_start_line.arguments[i]: 'UserID Terminal Host'
  1841. i += 1
  1842. assert i == len(line.arguments)
  1843. return UsersStart(source=source, target=users_start_target)
  1844. except Exception:
  1845. pass
  1846.  
  1847. if line.command == 393 and len(line.arguments) == 2: # UsersReply
  1848. try:
  1849. i = 0
  1850. users_reply_target = decode(line.arguments[i])
  1851. i += 1
  1852. users_reply_message = decode(line.arguments[i])
  1853. i += 1
  1854. assert i == len(line.arguments)
  1855. return UsersReply(source=source, target=users_reply_target, message=users_reply_message)
  1856. except Exception:
  1857. pass
  1858.  
  1859. if line.command == 394 and len(line.arguments) == 2: # UsersEnd
  1860. try:
  1861. i = 0
  1862. users_end_target = decode(line.arguments[i])
  1863. i += 1
  1864. # users_end_line.arguments[i]: 'End of users'
  1865. i += 1
  1866. assert i == len(line.arguments)
  1867. return UsersEnd(source=source, target=users_end_target)
  1868. except Exception:
  1869. pass
  1870.  
  1871. if line.command == 395 and len(line.arguments) == 2: # NoUsers
  1872. try:
  1873. i = 0
  1874. no_users_target = decode(line.arguments[i])
  1875. i += 1
  1876. # no_users_line.arguments[i]: 'Nobody logged in'
  1877. i += 1
  1878. assert i == len(line.arguments)
  1879. return NoUsers(source=source, target=no_users_target)
  1880. except Exception:
  1881. pass
  1882.  
  1883. if line.command == 401 and len(line.arguments) == 3: # NoSuchNick
  1884. try:
  1885. i = 0
  1886. no_such_nick_target = decode(line.arguments[i])
  1887. i += 1
  1888. no_such_nick_nickname = decode(line.arguments[i])
  1889. i += 1
  1890. # no_such_nick_line.arguments[i]: 'No such nick/channel'
  1891. i += 1
  1892. assert i == len(line.arguments)
  1893. return NoSuchNick(source=source, target=no_such_nick_target, nickname=no_such_nick_nickname)
  1894. except Exception:
  1895. pass
  1896.  
  1897. if line.command == 402 and len(line.arguments) == 3: # NoSuchServer
  1898. try:
  1899. i = 0
  1900. no_such_server_target = decode(line.arguments[i])
  1901. i += 1
  1902. no_such_server_server = decode(line.arguments[i])
  1903. i += 1
  1904. # no_such_server_line.arguments[i]: 'No such server'
  1905. i += 1
  1906. assert i == len(line.arguments)
  1907. return NoSuchServer(source=source, target=no_such_server_target, server=no_such_server_server)
  1908. except Exception:
  1909. pass
  1910.  
  1911. if line.command == 403 and len(line.arguments) == 3: # NoSuchChannel
  1912. try:
  1913. i = 0
  1914. no_such_channel_target = decode(line.arguments[i])
  1915. i += 1
  1916. no_such_channel_channel = decode(line.arguments[i])
  1917. i += 1
  1918. # no_such_channel_line.arguments[i]: 'No such channel'
  1919. i += 1
  1920. assert i == len(line.arguments)
  1921. return NoSuchChannel(source=source, target=no_such_channel_target, channel=no_such_channel_channel)
  1922. except Exception:
  1923. pass
  1924.  
  1925. if line.command == 404 and len(line.arguments) == 3: # CantSendToChan
  1926. try:
  1927. i = 0
  1928. cant_send_to_chan_target = decode(line.arguments[i])
  1929. i += 1
  1930. cant_send_to_chan_channel = decode(line.arguments[i])
  1931. i += 1
  1932. # cant_send_to_chan_line.arguments[i]: 'Cannot send to channel'
  1933. i += 1
  1934. assert i == len(line.arguments)
  1935. return CantSendToChan(source=source, target=cant_send_to_chan_target, channel=cant_send_to_chan_channel)
  1936. except Exception:
  1937. pass
  1938.  
  1939. if line.command == 405 and len(line.arguments) == 3: # TooManyChannels
  1940. try:
  1941. i = 0
  1942. too_many_channels_target = decode(line.arguments[i])
  1943. i += 1
  1944. too_many_channels_channel = decode(line.arguments[i])
  1945. i += 1
  1946. # too_many_channels_line.arguments[i]: 'You have joined too many channels'
  1947. i += 1
  1948. assert i == len(line.arguments)
  1949. return TooManyChannels(source=source, target=too_many_channels_target, channel=too_many_channels_channel)
  1950. except Exception:
  1951. pass
  1952.  
  1953. if line.command == 406 and len(line.arguments) == 3: # WasNoSuchNick
  1954. try:
  1955. i = 0
  1956. was_no_such_nick_target = decode(line.arguments[i])
  1957. i += 1
  1958. was_no_such_nick_nickname = decode(line.arguments[i])
  1959. i += 1
  1960. # was_no_such_nick_line.arguments[i]: 'There was no such nickname'
  1961. i += 1
  1962. assert i == len(line.arguments)
  1963. return WasNoSuchNick(source=source, target=was_no_such_nick_target, nickname=was_no_such_nick_nickname)
  1964. except Exception:
  1965. pass
  1966.  
  1967. if line.command == 407 and len(line.arguments) == 3: # TooManyTargets
  1968. try:
  1969. i = 0
  1970. too_many_targets_target = decode(line.arguments[i])
  1971. i += 1
  1972. too_many_targets_orig_target = decode(line.arguments[i])
  1973. i += 1
  1974. too_many_targets_message = decode(line.arguments[i])
  1975. i += 1
  1976. assert i == len(line.arguments)
  1977. return TooManyTargets(source=source, target=too_many_targets_target, orig_target=too_many_targets_orig_target, message=too_many_targets_message)
  1978. except Exception:
  1979. pass
  1980.  
  1981. if line.command == 408 and len(line.arguments) == 3: # NoSuchService
  1982. try:
  1983. i = 0
  1984. no_such_service_target = decode(line.arguments[i])
  1985. i += 1
  1986. no_such_service_name = decode(line.arguments[i])
  1987. i += 1
  1988. # no_such_service_line.arguments[i]: 'No such service'
  1989. i += 1
  1990. assert i == len(line.arguments)
  1991. return NoSuchService(source=source, target=no_such_service_target, name=no_such_service_name)
  1992. except Exception:
  1993. pass
  1994.  
  1995. if line.command == 409 and len(line.arguments) == 2: # NoOrigin
  1996. try:
  1997. i = 0
  1998. no_origin_target = decode(line.arguments[i])
  1999. i += 1
  2000. # no_origin_line.arguments[i]: 'No origin specified'
  2001. i += 1
  2002. assert i == len(line.arguments)
  2003. return NoOrigin(source=source, target=no_origin_target)
  2004. except Exception:
  2005. pass
  2006.  
  2007. if line.command == 411 and len(line.arguments) == 2: # NoRecipient
  2008. try:
  2009. i = 0
  2010. no_recipient_target = decode(line.arguments[i])
  2011. i += 1
  2012. # no_recipient_line.arguments[i]: 'No recipient given'
  2013. i += 1
  2014. assert i == len(line.arguments)
  2015. return NoRecipient(source=source, target=no_recipient_target)
  2016. except Exception:
  2017. pass
  2018.  
  2019. if line.command == 412 and len(line.arguments) == 2: # NoTextToSend
  2020. try:
  2021. i = 0
  2022. no_text_to_send_target = decode(line.arguments[i])
  2023. i += 1
  2024. # no_text_to_send_line.arguments[i]: 'No text to send'
  2025. i += 1
  2026. assert i == len(line.arguments)
  2027. return NoTextToSend(source=source, target=no_text_to_send_target)
  2028. except Exception:
  2029. pass
  2030.  
  2031. if line.command == 413 and len(line.arguments) == 3: # NoTopLevel
  2032. try:
  2033. i = 0
  2034. no_top_level_target = decode(line.arguments[i])
  2035. i += 1
  2036. no_top_level_mask = decode(line.arguments[i])
  2037. i += 1
  2038. # no_top_level_line.arguments[i]: 'No toplevel domain specified'
  2039. i += 1
  2040. assert i == len(line.arguments)
  2041. return NoTopLevel(source=source, target=no_top_level_target, mask=no_top_level_mask)
  2042. except Exception:
  2043. pass
  2044.  
  2045. if line.command == 414 and len(line.arguments) == 3: # WildTopLevel
  2046. try:
  2047. i = 0
  2048. wild_top_level_target = decode(line.arguments[i])
  2049. i += 1
  2050. wild_top_level_mask = decode(line.arguments[i])
  2051. i += 1
  2052. # wild_top_level_line.arguments[i]: 'Wildcard in toplevel domain'
  2053. i += 1
  2054. assert i == len(line.arguments)
  2055. return WildTopLevel(source=source, target=wild_top_level_target, mask=wild_top_level_mask)
  2056. except Exception:
  2057. pass
  2058.  
  2059. if line.command == 415 and len(line.arguments) == 3: # BadMask
  2060. try:
  2061. i = 0
  2062. bad_mask_target = decode(line.arguments[i])
  2063. i += 1
  2064. bad_mask_mask = decode(line.arguments[i])
  2065. i += 1
  2066. # bad_mask_line.arguments[i]: 'Bad Server/host mask'
  2067. i += 1
  2068. assert i == len(line.arguments)
  2069. return BadMask(source=source, target=bad_mask_target, mask=bad_mask_mask)
  2070. except Exception:
  2071. pass
  2072.  
  2073. if line.command == 421 and len(line.arguments) == 3: # UnknownCommand
  2074. try:
  2075. i = 0
  2076. unknown_command_target = decode(line.arguments[i])
  2077. i += 1
  2078. unknown_command_command = decode(line.arguments[i])
  2079. i += 1
  2080. # unknown_command_line.arguments[i]: 'Unknown command'
  2081. i += 1
  2082. assert i == len(line.arguments)
  2083. return UnknownCommand(source=source, target=unknown_command_target, command=unknown_command_command)
  2084. except Exception:
  2085. pass
  2086.  
  2087. if line.command == 422 and len(line.arguments) == 2: # NoMotd
  2088. try:
  2089. i = 0
  2090. no_motd_target = decode(line.arguments[i])
  2091. i += 1
  2092. # no_motd_line.arguments[i]: 'MOTD File is missing'
  2093. i += 1
  2094. assert i == len(line.arguments)
  2095. return NoMotd(source=source, target=no_motd_target)
  2096. except Exception:
  2097. pass
  2098.  
  2099. if line.command == 423 and len(line.arguments) == 3: # NoAdminInfo
  2100. try:
  2101. i = 0
  2102. no_admin_info_target = decode(line.arguments[i])
  2103. i += 1
  2104. no_admin_info_server = decode(line.arguments[i])
  2105. i += 1
  2106. # no_admin_info_line.arguments[i]: 'No administrative info available'
  2107. i += 1
  2108. assert i == len(line.arguments)
  2109. return NoAdminInfo(source=source, target=no_admin_info_target, server=no_admin_info_server)
  2110. except Exception:
  2111. pass
  2112.  
  2113. if line.command == 424 and len(line.arguments) == 2: # FileError
  2114. try:
  2115. i = 0
  2116. file_error_target = decode(line.arguments[i])
  2117. i += 1
  2118. file_error_message = decode(line.arguments[i])
  2119. i += 1
  2120. assert i == len(line.arguments)
  2121. return FileError(source=source, target=file_error_target, message=file_error_message)
  2122. except Exception:
  2123. pass
  2124.  
  2125. if line.command == 431 and len(line.arguments) == 2: # NoNicknameGiven
  2126. try:
  2127. i = 0
  2128. no_nickname_given_target = decode(line.arguments[i])
  2129. i += 1
  2130. # no_nickname_given_line.arguments[i]: 'No nickname given'
  2131. i += 1
  2132. assert i == len(line.arguments)
  2133. return NoNicknameGiven(source=source, target=no_nickname_given_target)
  2134. except Exception:
  2135. pass
  2136.  
  2137. if line.command == 432 and len(line.arguments) == 3: # ErroneusNickname
  2138. try:
  2139. i = 0
  2140. erroneus_nickname_target = decode(line.arguments[i])
  2141. i += 1
  2142. erroneus_nickname_nickname = decode(line.arguments[i])
  2143. i += 1
  2144. # erroneus_nickname_line.arguments[i]: 'Erroneous nickname'
  2145. i += 1
  2146. assert i == len(line.arguments)
  2147. return ErroneusNickname(source=source, target=erroneus_nickname_target, nickname=erroneus_nickname_nickname)
  2148. except Exception:
  2149. pass
  2150.  
  2151. if line.command == 433 and len(line.arguments) == 3: # NicknameInUse
  2152. try:
  2153. i = 0
  2154. nickname_in_use_target = decode(line.arguments[i])
  2155. i += 1
  2156. nickname_in_use_nickname = decode(line.arguments[i])
  2157. i += 1
  2158. # nickname_in_use_line.arguments[i]: 'Nickname is already in use'
  2159. i += 1
  2160. assert i == len(line.arguments)
  2161. return NicknameInUse(source=source, target=nickname_in_use_target, nickname=nickname_in_use_nickname)
  2162. except Exception:
  2163. pass
  2164.  
  2165. if line.command == 436 and len(line.arguments) == 3: # NickCollision
  2166. try:
  2167. i = 0
  2168. nick_collision_target = decode(line.arguments[i])
  2169. i += 1
  2170. nick_collision_nickname = decode(line.arguments[i])
  2171. i += 1
  2172. nick_collision_message = decode(line.arguments[i])
  2173. i += 1
  2174. assert i == len(line.arguments)
  2175. return NickCollision(source=source, target=nick_collision_target, nickname=nick_collision_nickname, message=nick_collision_message)
  2176. except Exception:
  2177. pass
  2178.  
  2179. if line.command == 437 and len(line.arguments) == 3: # UnavailResource
  2180. try:
  2181. i = 0
  2182. unavail_resource_target = decode(line.arguments[i])
  2183. i += 1
  2184. unavail_resource_name = decode(line.arguments[i])
  2185. i += 1
  2186. # unavail_resource_line.arguments[i]: 'Nick/channel is temporarily unavailable'
  2187. i += 1
  2188. assert i == len(line.arguments)
  2189. return UnavailResource(source=source, target=unavail_resource_target, name=unavail_resource_name)
  2190. except Exception:
  2191. pass
  2192.  
  2193. if line.command == 441 and len(line.arguments) == 4: # UserNotInChannel
  2194. try:
  2195. i = 0
  2196. user_not_in_channel_target = decode(line.arguments[i])
  2197. i += 1
  2198. user_not_in_channel_nickname = decode(line.arguments[i])
  2199. i += 1
  2200. user_not_in_channel_channel = decode(line.arguments[i])
  2201. i += 1
  2202. # user_not_in_channel_line.arguments[i]: "They aren't on that channel"
  2203. i += 1
  2204. assert i == len(line.arguments)
  2205. return UserNotInChannel(source=source, target=user_not_in_channel_target, nickname=user_not_in_channel_nickname, channel=user_not_in_channel_channel)
  2206. except Exception:
  2207. pass
  2208.  
  2209. if line.command == 442 and len(line.arguments) == 3: # NotOnChannel
  2210. try:
  2211. i = 0
  2212. not_on_channel_target = decode(line.arguments[i])
  2213. i += 1
  2214. not_on_channel_channel = decode(line.arguments[i])
  2215. i += 1
  2216. # not_on_channel_line.arguments[i]: "You're not on that channel"
  2217. i += 1
  2218. assert i == len(line.arguments)
  2219. return NotOnChannel(source=source, target=not_on_channel_target, channel=not_on_channel_channel)
  2220. except Exception:
  2221. pass
  2222.  
  2223. if line.command == 443 and len(line.arguments) == 4: # UserOnChannel
  2224. try:
  2225. i = 0
  2226. user_on_channel_target = decode(line.arguments[i])
  2227. i += 1
  2228. user_on_channel_user = decode(line.arguments[i])
  2229. i += 1
  2230. user_on_channel_channel = decode(line.arguments[i])
  2231. i += 1
  2232. # user_on_channel_line.arguments[i]: 'is already on channel'
  2233. i += 1
  2234. assert i == len(line.arguments)
  2235. return UserOnChannel(source=source, target=user_on_channel_target, user=user_on_channel_user, channel=user_on_channel_channel)
  2236. except Exception:
  2237. pass
  2238.  
  2239. if line.command == 444 and len(line.arguments) == 3: # NoLogin
  2240. try:
  2241. i = 0
  2242. no_login_target = decode(line.arguments[i])
  2243. i += 1
  2244. no_login_user = decode(line.arguments[i])
  2245. i += 1
  2246. # no_login_line.arguments[i]: 'User not logged in'
  2247. i += 1
  2248. assert i == len(line.arguments)
  2249. return NoLogin(source=source, target=no_login_target, user=no_login_user)
  2250. except Exception:
  2251. pass
  2252.  
  2253. if line.command == 445 and len(line.arguments) == 2: # SummonDisabled
  2254. try:
  2255. i = 0
  2256. summon_disabled_target = decode(line.arguments[i])
  2257. i += 1
  2258. # summon_disabled_line.arguments[i]: 'SUMMON has been disabled'
  2259. i += 1
  2260. assert i == len(line.arguments)
  2261. return SummonDisabled(source=source, target=summon_disabled_target)
  2262. except Exception:
  2263. pass
  2264.  
  2265. if line.command == 446 and len(line.arguments) == 2: # UsersDisabled
  2266. try:
  2267. i = 0
  2268. users_disabled_target = decode(line.arguments[i])
  2269. i += 1
  2270. # users_disabled_line.arguments[i]: 'USERS has been disabled'
  2271. i += 1
  2272. assert i == len(line.arguments)
  2273. return UsersDisabled(source=source, target=users_disabled_target)
  2274. except Exception:
  2275. pass
  2276.  
  2277. if line.command == 451 and len(line.arguments) == 2: # NotRegistered
  2278. try:
  2279. i = 0
  2280. not_registered_target = decode(line.arguments[i])
  2281. i += 1
  2282. # not_registered_line.arguments[i]: 'You have not registered'
  2283. i += 1
  2284. assert i == len(line.arguments)
  2285. return NotRegistered(source=source, target=not_registered_target)
  2286. except Exception:
  2287. pass
  2288.  
  2289. if line.command == 461 and len(line.arguments) == 3: # NeedMoreParams
  2290. try:
  2291. i = 0
  2292. need_more_params_target = decode(line.arguments[i])
  2293. i += 1
  2294. need_more_params_command = decode(line.arguments[i])
  2295. i += 1
  2296. # need_more_params_line.arguments[i]: 'Not enough parameters'
  2297. i += 1
  2298. assert i == len(line.arguments)
  2299. return NeedMoreParams(source=source, target=need_more_params_target, command=need_more_params_command)
  2300. except Exception:
  2301. pass
  2302.  
  2303. if line.command == 462 and len(line.arguments) == 2: # AlreadyRegistered
  2304. try:
  2305. i = 0
  2306. already_registered_target = decode(line.arguments[i])
  2307. i += 1
  2308. # already_registered_line.arguments[i]: 'Unauthorized command (already registered)'
  2309. i += 1
  2310. assert i == len(line.arguments)
  2311. return AlreadyRegistered(source=source, target=already_registered_target)
  2312. except Exception:
  2313. pass
  2314.  
  2315. if line.command == 463 and len(line.arguments) == 2: # NoPermForHost
  2316. try:
  2317. i = 0
  2318. no_perm_for_host_target = decode(line.arguments[i])
  2319. i += 1
  2320. # no_perm_for_host_line.arguments[i]: "Your host isn't among the privileged"
  2321. i += 1
  2322. assert i == len(line.arguments)
  2323. return NoPermForHost(source=source, target=no_perm_for_host_target)
  2324. except Exception:
  2325. pass
  2326.  
  2327. if line.command == 464 and len(line.arguments) == 2: # PasswordMismatch
  2328. try:
  2329. i = 0
  2330. password_mismatch_target = decode(line.arguments[i])
  2331. i += 1
  2332. # password_mismatch_line.arguments[i]: 'Password incorrect'
  2333. i += 1
  2334. assert i == len(line.arguments)
  2335. return PasswordMismatch(source=source, target=password_mismatch_target)
  2336. except Exception:
  2337. pass
  2338.  
  2339. if line.command == 465 and len(line.arguments) == 2: # YoureBannedCreep
  2340. try:
  2341. i = 0
  2342. youre_banned_creep_target = decode(line.arguments[i])
  2343. i += 1
  2344. # youre_banned_creep_line.arguments[i]: 'You are banned from this server'
  2345. i += 1
  2346. assert i == len(line.arguments)
  2347. return YoureBannedCreep(source=source, target=youre_banned_creep_target)
  2348. except Exception:
  2349. pass
  2350.  
  2351. if line.command == 466 and len(line.arguments) == 1: # YouWillBeBanned
  2352. try:
  2353. i = 0
  2354. you_will_be_banned_target = decode(line.arguments[i])
  2355. i += 1
  2356. assert i == len(line.arguments)
  2357. return YouWillBeBanned(source=source, target=you_will_be_banned_target)
  2358. except Exception:
  2359. pass
  2360.  
  2361. if line.command == 467 and len(line.arguments) == 3: # KeySet
  2362. try:
  2363. i = 0
  2364. key_set_target = decode(line.arguments[i])
  2365. i += 1
  2366. key_set_channel = decode(line.arguments[i])
  2367. i += 1
  2368. # key_set_line.arguments[i]: 'Channel key already set'
  2369. i += 1
  2370. assert i == len(line.arguments)
  2371. return KeySet(source=source, target=key_set_target, channel=key_set_channel)
  2372. except Exception:
  2373. pass
  2374.  
  2375. if line.command == 471 and len(line.arguments) == 3: # ChannelIsFull
  2376. try:
  2377. i = 0
  2378. channel_is_full_target = decode(line.arguments[i])
  2379. i += 1
  2380. channel_is_full_channel = decode(line.arguments[i])
  2381. i += 1
  2382. # channel_is_full_line.arguments[i]: 'Cannot join channel (+l)'
  2383. i += 1
  2384. assert i == len(line.arguments)
  2385. return ChannelIsFull(source=source, target=channel_is_full_target, channel=channel_is_full_channel)
  2386. except Exception:
  2387. pass
  2388.  
  2389. if line.command == 472 and len(line.arguments) == 3: # UnknownMode
  2390. try:
  2391. i = 0
  2392. unknown_mode_target = decode(line.arguments[i])
  2393. i += 1
  2394. unknown_mode_char = decode(line.arguments[i])
  2395. i += 1
  2396. # unknown_mode_line.arguments[i]: 'is unknown mode char to me'
  2397. i += 1
  2398. assert i == len(line.arguments)
  2399. return UnknownMode(source=source, target=unknown_mode_target, char=unknown_mode_char)
  2400. except Exception:
  2401. pass
  2402.  
  2403. if line.command == 473 and len(line.arguments) == 3: # InviteOnlyChan
  2404. try:
  2405. i = 0
  2406. invite_only_chan_target = decode(line.arguments[i])
  2407. i += 1
  2408. invite_only_chan_channel = decode(line.arguments[i])
  2409. i += 1
  2410. # invite_only_chan_line.arguments[i]: 'Cannot join channel (+i)'
  2411. i += 1
  2412. assert i == len(line.arguments)
  2413. return InviteOnlyChan(source=source, target=invite_only_chan_target, channel=invite_only_chan_channel)
  2414. except Exception:
  2415. pass
  2416.  
  2417. if line.command == 474 and len(line.arguments) == 3: # BannedFromChan
  2418. try:
  2419. i = 0
  2420. banned_from_chan_target = decode(line.arguments[i])
  2421. i += 1
  2422. banned_from_chan_channel = decode(line.arguments[i])
  2423. i += 1
  2424. # banned_from_chan_line.arguments[i]: 'Cannot join channel (+b)'
  2425. i += 1
  2426. assert i == len(line.arguments)
  2427. return BannedFromChan(source=source, target=banned_from_chan_target, channel=banned_from_chan_channel)
  2428. except Exception:
  2429. pass
  2430.  
  2431. if line.command == 475 and len(line.arguments) == 3: # BadChannelKey
  2432. try:
  2433. i = 0
  2434. bad_channel_key_target = decode(line.arguments[i])
  2435. i += 1
  2436. bad_channel_key_channel = decode(line.arguments[i])
  2437. i += 1
  2438. # bad_channel_key_line.arguments[i]: 'Cannot join channel (+k)'
  2439. i += 1
  2440. assert i == len(line.arguments)
  2441. return BadChannelKey(source=source, target=bad_channel_key_target, channel=bad_channel_key_channel)
  2442. except Exception:
  2443. pass
  2444.  
  2445. if line.command == 476 and len(line.arguments) == 3: # BadChanMask
  2446. try:
  2447. i = 0
  2448. bad_chan_mask_target = decode(line.arguments[i])
  2449. i += 1
  2450. bad_chan_mask_channel = decode(line.arguments[i])
  2451. i += 1
  2452. # bad_chan_mask_line.arguments[i]: 'Bad Channel Mask'
  2453. i += 1
  2454. assert i == len(line.arguments)
  2455. return BadChanMask(source=source, target=bad_chan_mask_target, channel=bad_chan_mask_channel)
  2456. except Exception:
  2457. pass
  2458.  
  2459. if line.command == 477 and len(line.arguments) == 3: # NoChanModes
  2460. try:
  2461. i = 0
  2462. no_chan_modes_target = decode(line.arguments[i])
  2463. i += 1
  2464. no_chan_modes_channel = decode(line.arguments[i])
  2465. i += 1
  2466. # no_chan_modes_line.arguments[i]: "Channel doesn't support modes"
  2467. i += 1
  2468. assert i == len(line.arguments)
  2469. return NoChanModes(source=source, target=no_chan_modes_target, channel=no_chan_modes_channel)
  2470. except Exception:
  2471. pass
  2472.  
  2473. if line.command == 478 and len(line.arguments) == 4: # BanListFull
  2474. try:
  2475. i = 0
  2476. ban_list_full_target = decode(line.arguments[i])
  2477. i += 1
  2478. ban_list_full_channel = decode(line.arguments[i])
  2479. i += 1
  2480. ban_list_full_char = decode(line.arguments[i])
  2481. i += 1
  2482. # ban_list_full_line.arguments[i]: 'Channel list is full'
  2483. i += 1
  2484. assert i == len(line.arguments)
  2485. return BanListFull(source=source, target=ban_list_full_target, channel=ban_list_full_channel, char=ban_list_full_char)
  2486. except Exception:
  2487. pass
  2488.  
  2489. if line.command == 481 and len(line.arguments) == 2: # NoPrivileges
  2490. try:
  2491. i = 0
  2492. no_privileges_target = decode(line.arguments[i])
  2493. i += 1
  2494. # no_privileges_line.arguments[i]: "Permission Denied- You're not an IRC operator"
  2495. i += 1
  2496. assert i == len(line.arguments)
  2497. return NoPrivileges(source=source, target=no_privileges_target)
  2498. except Exception:
  2499. pass
  2500.  
  2501. if line.command == 482 and len(line.arguments) == 3: # ChanOpPrivsNeeded
  2502. try:
  2503. i = 0
  2504. chan_op_privs_needed_target = decode(line.arguments[i])
  2505. i += 1
  2506. chan_op_privs_needed_channel = decode(line.arguments[i])
  2507. i += 1
  2508. # chan_op_privs_needed_line.arguments[i]: "You're not channel operator"
  2509. i += 1
  2510. assert i == len(line.arguments)
  2511. return ChanOpPrivsNeeded(source=source, target=chan_op_privs_needed_target, channel=chan_op_privs_needed_channel)
  2512. except Exception:
  2513. pass
  2514.  
  2515. if line.command == 483 and len(line.arguments) == 2: # CantKillServer
  2516. try:
  2517. i = 0
  2518. cant_kill_server_target = decode(line.arguments[i])
  2519. i += 1
  2520. # cant_kill_server_line.arguments[i]: "You can't kill a server!"
  2521. i += 1
  2522. assert i == len(line.arguments)
  2523. return CantKillServer(source=source, target=cant_kill_server_target)
  2524. except Exception:
  2525. pass
  2526.  
  2527. if line.command == 484 and len(line.arguments) == 2: # Restricted
  2528. try:
  2529. i = 0
  2530. restricted_target = decode(line.arguments[i])
  2531. i += 1
  2532. # restricted_line.arguments[i]: 'Your connection is restricted!'
  2533. i += 1
  2534. assert i == len(line.arguments)
  2535. return Restricted(source=source, target=restricted_target)
  2536. except Exception:
  2537. pass
  2538.  
  2539. if line.command == 485 and len(line.arguments) == 2: # UniqOpPrivsNeeded
  2540. try:
  2541. i = 0
  2542. uniq_op_privs_needed_target = decode(line.arguments[i])
  2543. i += 1
  2544. # uniq_op_privs_needed_line.arguments[i]: "You're not the original channel operator"
  2545. i += 1
  2546. assert i == len(line.arguments)
  2547. return UniqOpPrivsNeeded(source=source, target=uniq_op_privs_needed_target)
  2548. except Exception:
  2549. pass
  2550.  
  2551. if line.command == 491 and len(line.arguments) == 2: # NoOperHost
  2552. try:
  2553. i = 0
  2554. no_oper_host_target = decode(line.arguments[i])
  2555. i += 1
  2556. # no_oper_host_line.arguments[i]: 'No O-lines for your host'
  2557. i += 1
  2558. assert i == len(line.arguments)
  2559. return NoOperHost(source=source, target=no_oper_host_target)
  2560. except Exception:
  2561. pass
  2562.  
  2563. if line.command == 501 and len(line.arguments) == 2: # UserModeUnknownFlag
  2564. try:
  2565. i = 0
  2566. user_mode_unknown_flag_target = decode(line.arguments[i])
  2567. i += 1
  2568. # user_mode_unknown_flag_line.arguments[i]: 'Unknown MODE flag'
  2569. i += 1
  2570. assert i == len(line.arguments)
  2571. return UserModeUnknownFlag(source=source, target=user_mode_unknown_flag_target)
  2572. except Exception:
  2573. pass
  2574.  
  2575. if line.command == 502 and len(line.arguments) == 2: # UsersDontMatch
  2576. try:
  2577. i = 0
  2578. users_dont_match_target = decode(line.arguments[i])
  2579. i += 1
  2580. # users_dont_match_line.arguments[i]: 'Cannot change mode for other users'
  2581. i += 1
  2582. assert i == len(line.arguments)
  2583. return UsersDontMatch(source=source, target=users_dont_match_target)
  2584. except Exception:
  2585. pass
  2586.  
  2587. return Unknown(source, line.command, line.arguments)
  2588.  
  2589. class Pass(Message):
  2590. """
  2591. ``PASS <password>``
  2592. """
  2593.  
  2594. __slots__ = ['password']
  2595.  
  2596. def __init__(self, source: str, password: str) -> None:
  2597. self.source = source
  2598. self.password = password
  2599.  
  2600. def __repr__(self) -> str:
  2601. return 'Pass(source={}, password={})'.format(repr(self.source), repr(self.password))
  2602.  
  2603. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  2604. source = None
  2605. if self.source is not None:
  2606. source = encode(self.source)
  2607. arguments = []
  2608. arguments.append(encode(self.password))
  2609. return Line(source, b'PASS', arguments)
  2610.  
  2611.  
  2612. class Nick(Message):
  2613. """
  2614. ``NICK <nickname>``
  2615. """
  2616.  
  2617. __slots__ = ['nickname']
  2618.  
  2619. def __init__(self, source: str, nickname: str) -> None:
  2620. self.source = source
  2621. self.nickname = nickname
  2622.  
  2623. def __repr__(self) -> str:
  2624. return 'Nick(source={}, nickname={})'.format(repr(self.source), repr(self.nickname))
  2625.  
  2626. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  2627. source = None
  2628. if self.source is not None:
  2629. source = encode(self.source)
  2630. arguments = []
  2631. arguments.append(encode(self.nickname))
  2632. return Line(source, b'NICK', arguments)
  2633.  
  2634.  
  2635. class User(Message):
  2636. """
  2637. ``USER <user> <int:mode> * <realname>``
  2638. """
  2639.  
  2640. __slots__ = ['user', 'mode', 'realname']
  2641.  
  2642. def __init__(self, source: str, user: str, mode: int, realname: str) -> None:
  2643. self.source = source
  2644. self.user = user
  2645. self.mode = mode
  2646. self.realname = realname
  2647.  
  2648. def __repr__(self) -> str:
  2649. return 'User(source={}, user={}, mode={}, realname={})'.format(repr(self.source), repr(self.user), repr(self.mode), repr(self.realname))
  2650.  
  2651. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  2652. source = None
  2653. if self.source is not None:
  2654. source = encode(self.source)
  2655. arguments = []
  2656. arguments.append(encode(self.user))
  2657. arguments.append(encode(str(self.mode)))
  2658. arguments.append(b'*')
  2659. arguments.append(encode(self.realname))
  2660. return Line(source, b'USER', arguments)
  2661.  
  2662.  
  2663. class Oper(Message):
  2664. """
  2665. ``OPER <name> <password>``
  2666. """
  2667.  
  2668. __slots__ = ['name', 'password']
  2669.  
  2670. def __init__(self, source: str, name: str, password: str) -> None:
  2671. self.source = source
  2672. self.name = name
  2673. self.password = password
  2674.  
  2675. def __repr__(self) -> str:
  2676. return 'Oper(source={}, name={}, password={})'.format(repr(self.source), repr(self.name), repr(self.password))
  2677.  
  2678. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  2679. source = None
  2680. if self.source is not None:
  2681. source = encode(self.source)
  2682. arguments = []
  2683. arguments.append(encode(self.name))
  2684. arguments.append(encode(self.password))
  2685. return Line(source, b'OPER', arguments)
  2686.  
  2687.  
  2688. class Mode(Message):
  2689. """
  2690. ``MODE <name> <mode>``
  2691.  
  2692. FIXME multiples.
  2693. """
  2694.  
  2695. __slots__ = ['name', 'mode']
  2696.  
  2697. def __init__(self, source: str, name: str, mode: str) -> None:
  2698. self.source = source
  2699. self.name = name
  2700. self.mode = mode
  2701.  
  2702. def __repr__(self) -> str:
  2703. return 'Mode(source={}, name={}, mode={})'.format(repr(self.source), repr(self.name), repr(self.mode))
  2704.  
  2705. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  2706. source = None
  2707. if self.source is not None:
  2708. source = encode(self.source)
  2709. arguments = []
  2710. arguments.append(encode(self.name))
  2711. arguments.append(encode(self.mode))
  2712. return Line(source, b'MODE', arguments)
  2713.  
  2714.  
  2715. class Service(Message):
  2716. """
  2717. ``SERVICE <nickname> * <distribution> <int:type> 0 <info>``
  2718. """
  2719.  
  2720. __slots__ = ['nickname', 'distribution', 'type', 'info']
  2721.  
  2722. def __init__(self, source: str, nickname: str, distribution: str, type: int, info: str) -> None:
  2723. self.source = source
  2724. self.nickname = nickname
  2725. self.distribution = distribution
  2726. self.type = type
  2727. self.info = info
  2728.  
  2729. def __repr__(self) -> str:
  2730. return 'Service(source={}, nickname={}, distribution={}, type={}, info={})'.format(repr(self.source), repr(self.nickname), repr(self.distribution), repr(self.type), repr(self.info))
  2731.  
  2732. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  2733. source = None
  2734. if self.source is not None:
  2735. source = encode(self.source)
  2736. arguments = []
  2737. arguments.append(encode(self.nickname))
  2738. arguments.append(b'*')
  2739. arguments.append(encode(self.distribution))
  2740. arguments.append(encode(str(self.type)))
  2741. arguments.append(b'0')
  2742. arguments.append(encode(self.info))
  2743. return Line(source, b'SERVICE', arguments)
  2744.  
  2745.  
  2746. class Quit(Message):
  2747. """
  2748. ``QUIT [message]``
  2749. """
  2750.  
  2751. __slots__ = ['message']
  2752.  
  2753. def __init__(self, source: str, message: str = None) -> None:
  2754. self.source = source
  2755. self.message = message
  2756.  
  2757. def __repr__(self) -> str:
  2758. return 'Quit(source={}, message={})'.format(repr(self.source), repr(self.message))
  2759.  
  2760. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  2761. source = None
  2762. if self.source is not None:
  2763. source = encode(self.source)
  2764. arguments = []
  2765. if self.message is not None:
  2766. arguments.append(encode(self.message))
  2767. return Line(source, b'QUIT', arguments)
  2768.  
  2769.  
  2770. class SQuit(Message):
  2771. """
  2772. ``SQUIT <server> <comment>``
  2773. """
  2774.  
  2775. __slots__ = ['server', 'comment']
  2776.  
  2777. def __init__(self, source: str, server: str, comment: str) -> None:
  2778. self.source = source
  2779. self.server = server
  2780. self.comment = comment
  2781.  
  2782. def __repr__(self) -> str:
  2783. return 'SQuit(source={}, server={}, comment={})'.format(repr(self.source), repr(self.server), repr(self.comment))
  2784.  
  2785. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  2786. source = None
  2787. if self.source is not None:
  2788. source = encode(self.source)
  2789. arguments = []
  2790. arguments.append(encode(self.server))
  2791. arguments.append(encode(self.comment))
  2792. return Line(source, b'SQUIT', arguments)
  2793.  
  2794.  
  2795. class ChannelJoin(Message):
  2796. """
  2797. ``JOIN <channels,> [keys,]``
  2798. """
  2799.  
  2800. __slots__ = ['channels', 'keys']
  2801.  
  2802. def __init__(self, source: str, channels: typing.List[str], keys: typing.List[str] = None) -> None:
  2803. self.source = source
  2804. self.channels = channels
  2805. self.keys = keys
  2806.  
  2807. def __repr__(self) -> str:
  2808. return 'ChannelJoin(source={}, channels={}, keys={})'.format(repr(self.source), repr(self.channels), repr(self.keys))
  2809.  
  2810. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  2811. source = None
  2812. if self.source is not None:
  2813. source = encode(self.source)
  2814. arguments = []
  2815. arguments.append(b",".join(encode(x) for x in self.channels))
  2816. if self.keys is not None:
  2817. arguments.append(b",".join(encode(x) for x in self.keys))
  2818. return Line(source, b'JOIN', arguments)
  2819.  
  2820.  
  2821. class ChannelPart(Message):
  2822. """
  2823. ``PART <channels,> [message]``
  2824. """
  2825.  
  2826. __slots__ = ['channels', 'message']
  2827.  
  2828. def __init__(self, source: str, channels: typing.List[str], message: str = None) -> None:
  2829. self.source = source
  2830. self.channels = channels
  2831. self.message = message
  2832.  
  2833. def __repr__(self) -> str:
  2834. return 'ChannelPart(source={}, channels={}, message={})'.format(repr(self.source), repr(self.channels), repr(self.message))
  2835.  
  2836. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  2837. source = None
  2838. if self.source is not None:
  2839. source = encode(self.source)
  2840. arguments = []
  2841. arguments.append(b",".join(encode(x) for x in self.channels))
  2842. if self.message is not None:
  2843. arguments.append(encode(self.message))
  2844. return Line(source, b'PART', arguments)
  2845.  
  2846.  
  2847. class Topic(Message):
  2848. """
  2849. ``TOPIC <channel> [topic]``
  2850. """
  2851.  
  2852. __slots__ = ['channel', 'topic']
  2853.  
  2854. def __init__(self, source: str, channel: str, topic: str = None) -> None:
  2855. self.source = source
  2856. self.channel = channel
  2857. self.topic = topic
  2858.  
  2859. def __repr__(self) -> str:
  2860. return 'Topic(source={}, channel={}, topic={})'.format(repr(self.source), repr(self.channel), repr(self.topic))
  2861.  
  2862. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  2863. source = None
  2864. if self.source is not None:
  2865. source = encode(self.source)
  2866. arguments = []
  2867. arguments.append(encode(self.channel))
  2868. if self.topic is not None:
  2869. arguments.append(encode(self.topic))
  2870. return Line(source, b'TOPIC', arguments)
  2871.  
  2872.  
  2873. class Names(Message):
  2874. """
  2875. ``NAMES [channels,] [target]``
  2876. """
  2877.  
  2878. __slots__ = ['channels', 'target']
  2879.  
  2880. def __init__(self, source: str, channels: typing.List[str] = None, target: str = None) -> None:
  2881. self.source = source
  2882. self.channels = channels
  2883. self.target = target
  2884.  
  2885. def __repr__(self) -> str:
  2886. return 'Names(source={}, channels={}, target={})'.format(repr(self.source), repr(self.channels), repr(self.target))
  2887.  
  2888. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  2889. source = None
  2890. if self.source is not None:
  2891. source = encode(self.source)
  2892. arguments = []
  2893. if self.channels is not None:
  2894. arguments.append(b",".join(encode(x) for x in self.channels))
  2895. if self.target is not None:
  2896. arguments.append(encode(self.target))
  2897. return Line(source, b'NAMES', arguments)
  2898.  
  2899.  
  2900. class List(Message):
  2901. """
  2902. ``LIST [channels,] [target]``
  2903. """
  2904.  
  2905. __slots__ = ['channels', 'target']
  2906.  
  2907. def __init__(self, source: str, channels: typing.List[str] = None, target: str = None) -> None:
  2908. self.source = source
  2909. self.channels = channels
  2910. self.target = target
  2911.  
  2912. def __repr__(self) -> str:
  2913. return 'List(source={}, channels={}, target={})'.format(repr(self.source), repr(self.channels), repr(self.target))
  2914.  
  2915. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  2916. source = None
  2917. if self.source is not None:
  2918. source = encode(self.source)
  2919. arguments = []
  2920. if self.channels is not None:
  2921. arguments.append(b",".join(encode(x) for x in self.channels))
  2922. if self.target is not None:
  2923. arguments.append(encode(self.target))
  2924. return Line(source, b'LIST', arguments)
  2925.  
  2926.  
  2927. class Invite(Message):
  2928. """
  2929. ``INVITE <nickname> <channel>``
  2930. """
  2931.  
  2932. __slots__ = ['nickname', 'channel']
  2933.  
  2934. def __init__(self, source: str, nickname: str, channel: str) -> None:
  2935. self.source = source
  2936. self.nickname = nickname
  2937. self.channel = channel
  2938.  
  2939. def __repr__(self) -> str:
  2940. return 'Invite(source={}, nickname={}, channel={})'.format(repr(self.source), repr(self.nickname), repr(self.channel))
  2941.  
  2942. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  2943. source = None
  2944. if self.source is not None:
  2945. source = encode(self.source)
  2946. arguments = []
  2947. arguments.append(encode(self.nickname))
  2948. arguments.append(encode(self.channel))
  2949. return Line(source, b'INVITE', arguments)
  2950.  
  2951.  
  2952. class Kick(Message):
  2953. """
  2954. ``KICK <channels,> <users,> [comment]``
  2955. """
  2956.  
  2957. __slots__ = ['channels', 'users', 'comment']
  2958.  
  2959. def __init__(self, source: str, channels: typing.List[str], users: typing.List[str], comment: str = None) -> None:
  2960. self.source = source
  2961. self.channels = channels
  2962. self.users = users
  2963. self.comment = comment
  2964.  
  2965. def __repr__(self) -> str:
  2966. return 'Kick(source={}, channels={}, users={}, comment={})'.format(repr(self.source), repr(self.channels), repr(self.users), repr(self.comment))
  2967.  
  2968. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  2969. source = None
  2970. if self.source is not None:
  2971. source = encode(self.source)
  2972. arguments = []
  2973. arguments.append(b",".join(encode(x) for x in self.channels))
  2974. arguments.append(b",".join(encode(x) for x in self.users))
  2975. if self.comment is not None:
  2976. arguments.append(encode(self.comment))
  2977. return Line(source, b'KICK', arguments)
  2978.  
  2979.  
  2980. class Privmsg(Message):
  2981. """
  2982. ``PRIVMSG <target> <message>``
  2983. """
  2984.  
  2985. __slots__ = ['target', 'message']
  2986.  
  2987. def __init__(self, source: str, target: str, message: str) -> None:
  2988. self.source = source
  2989. self.target = target
  2990. self.message = message
  2991.  
  2992. def __repr__(self) -> str:
  2993. return 'Privmsg(source={}, target={}, message={})'.format(repr(self.source), repr(self.target), repr(self.message))
  2994.  
  2995. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  2996. source = None
  2997. if self.source is not None:
  2998. source = encode(self.source)
  2999. arguments = []
  3000. arguments.append(encode(self.target))
  3001. arguments.append(encode(self.message))
  3002. return Line(source, b'PRIVMSG', arguments)
  3003.  
  3004.  
  3005. class Notice(Message):
  3006. """
  3007. ``NOTICE <target> <message>``
  3008. """
  3009.  
  3010. __slots__ = ['target', 'message']
  3011.  
  3012. def __init__(self, source: str, target: str, message: str) -> None:
  3013. self.source = source
  3014. self.target = target
  3015. self.message = message
  3016.  
  3017. def __repr__(self) -> str:
  3018. return 'Notice(source={}, target={}, message={})'.format(repr(self.source), repr(self.target), repr(self.message))
  3019.  
  3020. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  3021. source = None
  3022. if self.source is not None:
  3023. source = encode(self.source)
  3024. arguments = []
  3025. arguments.append(encode(self.target))
  3026. arguments.append(encode(self.message))
  3027. return Line(source, b'NOTICE', arguments)
  3028.  
  3029.  
  3030. class Motd(Message):
  3031. """
  3032. ``MOTD [target]``
  3033. """
  3034.  
  3035. __slots__ = ['target']
  3036.  
  3037. def __init__(self, source: str, target: str = None) -> None:
  3038. self.source = source
  3039. self.target = target
  3040.  
  3041. def __repr__(self) -> str:
  3042. return 'Motd(source={}, target={})'.format(repr(self.source), repr(self.target))
  3043.  
  3044. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  3045. source = None
  3046. if self.source is not None:
  3047. source = encode(self.source)
  3048. arguments = []
  3049. if self.target is not None:
  3050. arguments.append(encode(self.target))
  3051. return Line(source, b'MOTD', arguments)
  3052.  
  3053.  
  3054. class Lusers(Message):
  3055. """
  3056. ``LUSERS [mask] [target]``
  3057. """
  3058.  
  3059. __slots__ = ['mask', 'target']
  3060.  
  3061. def __init__(self, source: str, mask: str = None, target: str = None) -> None:
  3062. self.source = source
  3063. self.mask = mask
  3064. self.target = target
  3065.  
  3066. def __repr__(self) -> str:
  3067. return 'Lusers(source={}, mask={}, target={})'.format(repr(self.source), repr(self.mask), repr(self.target))
  3068.  
  3069. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  3070. source = None
  3071. if self.source is not None:
  3072. source = encode(self.source)
  3073. arguments = []
  3074. if self.mask is not None:
  3075. arguments.append(encode(self.mask))
  3076. if self.target is not None:
  3077. arguments.append(encode(self.target))
  3078. return Line(source, b'LUSERS', arguments)
  3079.  
  3080.  
  3081. class Version(Message):
  3082. """
  3083. ``VERSION [target]``
  3084. """
  3085.  
  3086. __slots__ = ['target']
  3087.  
  3088. def __init__(self, source: str, target: str = None) -> None:
  3089. self.source = source
  3090. self.target = target
  3091.  
  3092. def __repr__(self) -> str:
  3093. return 'Version(source={}, target={})'.format(repr(self.source), repr(self.target))
  3094.  
  3095. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  3096. source = None
  3097. if self.source is not None:
  3098. source = encode(self.source)
  3099. arguments = []
  3100. if self.target is not None:
  3101. arguments.append(encode(self.target))
  3102. return Line(source, b'VERSION', arguments)
  3103.  
  3104.  
  3105. class Stats(Message):
  3106. """
  3107. ``STATS [query] [target]``
  3108. """
  3109.  
  3110. __slots__ = ['query', 'target']
  3111.  
  3112. def __init__(self, source: str, query: str = None, target: str = None) -> None:
  3113. self.source = source
  3114. self.query = query
  3115. self.target = target
  3116.  
  3117. def __repr__(self) -> str:
  3118. return 'Stats(source={}, query={}, target={})'.format(repr(self.source), repr(self.query), repr(self.target))
  3119.  
  3120. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  3121. source = None
  3122. if self.source is not None:
  3123. source = encode(self.source)
  3124. arguments = []
  3125. if self.query is not None:
  3126. arguments.append(encode(self.query))
  3127. if self.target is not None:
  3128. arguments.append(encode(self.target))
  3129. return Line(source, b'STATS', arguments)
  3130.  
  3131.  
  3132. class Links(Message):
  3133. """
  3134. ``LINKS (server) (mask)``
  3135. """
  3136.  
  3137. __slots__ = ['server', 'mask']
  3138.  
  3139. def __init__(self, source: str, server: str = None, mask: str = None) -> None:
  3140. self.source = source
  3141. self.server = server
  3142. self.mask = mask
  3143.  
  3144. def __repr__(self) -> str:
  3145. return 'Links(source={}, server={}, mask={})'.format(repr(self.source), repr(self.server), repr(self.mask))
  3146.  
  3147. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  3148. source = None
  3149. if self.source is not None:
  3150. source = encode(self.source)
  3151. arguments = []
  3152. if self.server is not None:
  3153. arguments.append(encode(self.server))
  3154. if self.mask is not None:
  3155. arguments.append(encode(self.mask))
  3156. return Line(source, b'LINKS', arguments)
  3157.  
  3158.  
  3159. class Time(Message):
  3160. """
  3161. ``TIME [target]``
  3162. """
  3163.  
  3164. __slots__ = ['target']
  3165.  
  3166. def __init__(self, source: str, target: str = None) -> None:
  3167. self.source = source
  3168. self.target = target
  3169.  
  3170. def __repr__(self) -> str:
  3171. return 'Time(source={}, target={})'.format(repr(self.source), repr(self.target))
  3172.  
  3173. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  3174. source = None
  3175. if self.source is not None:
  3176. source = encode(self.source)
  3177. arguments = []
  3178. if self.target is not None:
  3179. arguments.append(encode(self.target))
  3180. return Line(source, b'TIME', arguments)
  3181.  
  3182.  
  3183. class ServerConnect(Message):
  3184. """
  3185. ``CONNECT <target> <int:port> [remote]``
  3186. """
  3187.  
  3188. __slots__ = ['target', 'port', 'remote']
  3189.  
  3190. def __init__(self, source: str, target: str, port: int, remote: str = None) -> None:
  3191. self.source = source
  3192. self.target = target
  3193. self.port = port
  3194. self.remote = remote
  3195.  
  3196. def __repr__(self) -> str:
  3197. return 'ServerConnect(source={}, target={}, port={}, remote={})'.format(repr(self.source), repr(self.target), repr(self.port), repr(self.remote))
  3198.  
  3199. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  3200. source = None
  3201. if self.source is not None:
  3202. source = encode(self.source)
  3203. arguments = []
  3204. arguments.append(encode(self.target))
  3205. arguments.append(encode(str(self.port)))
  3206. if self.remote is not None:
  3207. arguments.append(encode(self.remote))
  3208. return Line(source, b'CONNECT', arguments)
  3209.  
  3210.  
  3211. class Trace(Message):
  3212. """
  3213. ``TRACE [target]``
  3214. """
  3215.  
  3216. __slots__ = ['target']
  3217.  
  3218. def __init__(self, source: str, target: str = None) -> None:
  3219. self.source = source
  3220. self.target = target
  3221.  
  3222. def __repr__(self) -> str:
  3223. return 'Trace(source={}, target={})'.format(repr(self.source), repr(self.target))
  3224.  
  3225. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  3226. source = None
  3227. if self.source is not None:
  3228. source = encode(self.source)
  3229. arguments = []
  3230. if self.target is not None:
  3231. arguments.append(encode(self.target))
  3232. return Line(source, b'TRACE', arguments)
  3233.  
  3234.  
  3235. class Admin(Message):
  3236. """
  3237. ``ADMIN [target]``
  3238. """
  3239.  
  3240. __slots__ = ['target']
  3241.  
  3242. def __init__(self, source: str, target: str = None) -> None:
  3243. self.source = source
  3244. self.target = target
  3245.  
  3246. def __repr__(self) -> str:
  3247. return 'Admin(source={}, target={})'.format(repr(self.source), repr(self.target))
  3248.  
  3249. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  3250. source = None
  3251. if self.source is not None:
  3252. source = encode(self.source)
  3253. arguments = []
  3254. if self.target is not None:
  3255. arguments.append(encode(self.target))
  3256. return Line(source, b'ADMIN', arguments)
  3257.  
  3258.  
  3259. class Info(Message):
  3260. """
  3261. ``INFO [target]``
  3262. """
  3263.  
  3264. __slots__ = ['target']
  3265.  
  3266. def __init__(self, source: str, target: str = None) -> None:
  3267. self.source = source
  3268. self.target = target
  3269.  
  3270. def __repr__(self) -> str:
  3271. return 'Info(source={}, target={})'.format(repr(self.source), repr(self.target))
  3272.  
  3273. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  3274. source = None
  3275. if self.source is not None:
  3276. source = encode(self.source)
  3277. arguments = []
  3278. if self.target is not None:
  3279. arguments.append(encode(self.target))
  3280. return Line(source, b'INFO', arguments)
  3281.  
  3282.  
  3283. class ServList(Message):
  3284. """
  3285. ``SERVLIST [mask] [type]``
  3286. """
  3287.  
  3288. __slots__ = ['mask', 'type']
  3289.  
  3290. def __init__(self, source: str, mask: str = None, type: str = None) -> None:
  3291. self.source = source
  3292. self.mask = mask
  3293. self.type = type
  3294.  
  3295. def __repr__(self) -> str:
  3296. return 'ServList(source={}, mask={}, type={})'.format(repr(self.source), repr(self.mask), repr(self.type))
  3297.  
  3298. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  3299. source = None
  3300. if self.source is not None:
  3301. source = encode(self.source)
  3302. arguments = []
  3303. if self.mask is not None:
  3304. arguments.append(encode(self.mask))
  3305. if self.type is not None:
  3306. arguments.append(encode(self.type))
  3307. return Line(source, b'SERVLIST', arguments)
  3308.  
  3309.  
  3310. class SQuery(Message):
  3311. """
  3312. ``SQUERY <servicename> <text>``
  3313. """
  3314.  
  3315. __slots__ = ['servicename', 'text']
  3316.  
  3317. def __init__(self, source: str, servicename: str, text: str) -> None:
  3318. self.source = source
  3319. self.servicename = servicename
  3320. self.text = text
  3321.  
  3322. def __repr__(self) -> str:
  3323. return 'SQuery(source={}, servicename={}, text={})'.format(repr(self.source), repr(self.servicename), repr(self.text))
  3324.  
  3325. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  3326. source = None
  3327. if self.source is not None:
  3328. source = encode(self.source)
  3329. arguments = []
  3330. arguments.append(encode(self.servicename))
  3331. arguments.append(encode(self.text))
  3332. return Line(source, b'SQUERY', arguments)
  3333.  
  3334.  
  3335. class Who(Message):
  3336. """
  3337. ``WHO [mask] [flag(o):operators]``
  3338. """
  3339.  
  3340. __slots__ = ['mask', 'operators']
  3341.  
  3342. def __init__(self, source: str, mask: str = None, operators: bool = None) -> None:
  3343. self.source = source
  3344. self.mask = mask
  3345. self.operators = operators
  3346.  
  3347. def __repr__(self) -> str:
  3348. return 'Who(source={}, mask={}, operators={})'.format(repr(self.source), repr(self.mask), repr(self.operators))
  3349.  
  3350. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  3351. source = None
  3352. if self.source is not None:
  3353. source = encode(self.source)
  3354. arguments = []
  3355. if self.mask is not None:
  3356. arguments.append(encode(self.mask))
  3357. if self.operators is not None:
  3358. arguments.append(b'o')
  3359. return Line(source, b'WHO', arguments)
  3360.  
  3361.  
  3362. class WhoIs(Message):
  3363. """
  3364. ``WHOIS [target] <masks,>``
  3365. """
  3366.  
  3367. __slots__ = ['target', 'masks']
  3368.  
  3369. def __init__(self, source: str, masks: typing.List[str], target: str = None) -> None:
  3370. self.source = source
  3371. self.target = target
  3372. self.masks = masks
  3373.  
  3374. def __repr__(self) -> str:
  3375. return 'WhoIs(source={}, target={}, masks={})'.format(repr(self.source), repr(self.target), repr(self.masks))
  3376.  
  3377. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  3378. source = None
  3379. if self.source is not None:
  3380. source = encode(self.source)
  3381. arguments = []
  3382. if self.target is not None:
  3383. arguments.append(encode(self.target))
  3384. arguments.append(b",".join(encode(x) for x in self.masks))
  3385. return Line(source, b'WHOIS', arguments)
  3386.  
  3387.  
  3388. class WhoWas(Message):
  3389. """
  3390. ``WHOWAS <nicknames,> [int:count] [target]``
  3391. """
  3392.  
  3393. __slots__ = ['nicknames', 'count', 'target']
  3394.  
  3395. def __init__(self, source: str, nicknames: typing.List[str], count: int = None, target: str = None) -> None:
  3396. self.source = source
  3397. self.nicknames = nicknames
  3398. self.count = count
  3399. self.target = target
  3400.  
  3401. def __repr__(self) -> str:
  3402. return 'WhoWas(source={}, nicknames={}, count={}, target={})'.format(repr(self.source), repr(self.nicknames), repr(self.count), repr(self.target))
  3403.  
  3404. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  3405. source = None
  3406. if self.source is not None:
  3407. source = encode(self.source)
  3408. arguments = []
  3409. arguments.append(b",".join(encode(x) for x in self.nicknames))
  3410. if self.count is not None:
  3411. arguments.append(encode(str(self.count)))
  3412. if self.target is not None:
  3413. arguments.append(encode(self.target))
  3414. return Line(source, b'WHOWAS', arguments)
  3415.  
  3416.  
  3417. class Kill(Message):
  3418. """
  3419. ``KILL <nickname> <comment>``
  3420. """
  3421.  
  3422. __slots__ = ['nickname', 'comment']
  3423.  
  3424. def __init__(self, source: str, nickname: str, comment: str) -> None:
  3425. self.source = source
  3426. self.nickname = nickname
  3427. self.comment = comment
  3428.  
  3429. def __repr__(self) -> str:
  3430. return 'Kill(source={}, nickname={}, comment={})'.format(repr(self.source), repr(self.nickname), repr(self.comment))
  3431.  
  3432. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  3433. source = None
  3434. if self.source is not None:
  3435. source = encode(self.source)
  3436. arguments = []
  3437. arguments.append(encode(self.nickname))
  3438. arguments.append(encode(self.comment))
  3439. return Line(source, b'KILL', arguments)
  3440.  
  3441.  
  3442. class Ping(Message):
  3443. """
  3444. ``PING <server1> [server2]``
  3445. """
  3446.  
  3447. __slots__ = ['server1', 'server2']
  3448.  
  3449. def __init__(self, source: str, server1: str, server2: str = None) -> None:
  3450. self.source = source
  3451. self.server1 = server1
  3452. self.server2 = server2
  3453.  
  3454. def __repr__(self) -> str:
  3455. return 'Ping(source={}, server1={}, server2={})'.format(repr(self.source), repr(self.server1), repr(self.server2))
  3456.  
  3457. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  3458. source = None
  3459. if self.source is not None:
  3460. source = encode(self.source)
  3461. arguments = []
  3462. arguments.append(encode(self.server1))
  3463. if self.server2 is not None:
  3464. arguments.append(encode(self.server2))
  3465. return Line(source, b'PING', arguments)
  3466.  
  3467.  
  3468. class Pong(Message):
  3469. """
  3470. ``PONG <server> [server2]``
  3471. """
  3472.  
  3473. __slots__ = ['server', 'server2']
  3474.  
  3475. def __init__(self, source: str, server: str, server2: str = None) -> None:
  3476. self.source = source
  3477. self.server = server
  3478. self.server2 = server2
  3479.  
  3480. def __repr__(self) -> str:
  3481. return 'Pong(source={}, server={}, server2={})'.format(repr(self.source), repr(self.server), repr(self.server2))
  3482.  
  3483. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  3484. source = None
  3485. if self.source is not None:
  3486. source = encode(self.source)
  3487. arguments = []
  3488. arguments.append(encode(self.server))
  3489. if self.server2 is not None:
  3490. arguments.append(encode(self.server2))
  3491. return Line(source, b'PONG', arguments)
  3492.  
  3493.  
  3494. class Error(Message):
  3495. """
  3496. ``ERROR <message>``
  3497. """
  3498.  
  3499. __slots__ = ['message']
  3500.  
  3501. def __init__(self, source: str, message: str) -> None:
  3502. self.source = source
  3503. self.message = message
  3504.  
  3505. def __repr__(self) -> str:
  3506. return 'Error(source={}, message={})'.format(repr(self.source), repr(self.message))
  3507.  
  3508. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  3509. source = None
  3510. if self.source is not None:
  3511. source = encode(self.source)
  3512. arguments = []
  3513. arguments.append(encode(self.message))
  3514. return Line(source, b'ERROR', arguments)
  3515.  
  3516.  
  3517. class Away(Message):
  3518. """
  3519. ``AWAY [text]``
  3520. """
  3521.  
  3522. __slots__ = ['text']
  3523.  
  3524. def __init__(self, source: str, text: str = None) -> None:
  3525. self.source = source
  3526. self.text = text
  3527.  
  3528. def __repr__(self) -> str:
  3529. return 'Away(source={}, text={})'.format(repr(self.source), repr(self.text))
  3530.  
  3531. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  3532. source = None
  3533. if self.source is not None:
  3534. source = encode(self.source)
  3535. arguments = []
  3536. if self.text is not None:
  3537. arguments.append(encode(self.text))
  3538. return Line(source, b'AWAY', arguments)
  3539.  
  3540.  
  3541. class Rehash(Message):
  3542. """
  3543. ``REHASH``
  3544. """
  3545.  
  3546. def __init__(self, source: str) -> None:
  3547. self.source = source
  3548.  
  3549. def __repr__(self) -> str:
  3550. return 'Rehash(source={})'.format(repr(self.source))
  3551.  
  3552. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  3553. source = None
  3554. if self.source is not None:
  3555. source = encode(self.source)
  3556. return Line(source, b'REHASH')
  3557.  
  3558.  
  3559. class Die(Message):
  3560. """
  3561. ``DIE``
  3562. """
  3563.  
  3564. def __init__(self, source: str) -> None:
  3565. self.source = source
  3566.  
  3567. def __repr__(self) -> str:
  3568. return 'Die(source={})'.format(repr(self.source))
  3569.  
  3570. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  3571. source = None
  3572. if self.source is not None:
  3573. source = encode(self.source)
  3574. return Line(source, b'DIE')
  3575.  
  3576.  
  3577. class Restart(Message):
  3578. """
  3579. ``RESTART``
  3580. """
  3581.  
  3582. def __init__(self, source: str) -> None:
  3583. self.source = source
  3584.  
  3585. def __repr__(self) -> str:
  3586. return 'Restart(source={})'.format(repr(self.source))
  3587.  
  3588. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  3589. source = None
  3590. if self.source is not None:
  3591. source = encode(self.source)
  3592. return Line(source, b'RESTART')
  3593.  
  3594.  
  3595. class Summon(Message):
  3596. """
  3597. ``SUMMON <user> [target] [channel]``
  3598. """
  3599.  
  3600. __slots__ = ['user', 'target', 'channel']
  3601.  
  3602. def __init__(self, source: str, user: str, target: str = None, channel: str = None) -> None:
  3603. self.source = source
  3604. self.user = user
  3605. self.target = target
  3606. self.channel = channel
  3607.  
  3608. def __repr__(self) -> str:
  3609. return 'Summon(source={}, user={}, target={}, channel={})'.format(repr(self.source), repr(self.user), repr(self.target), repr(self.channel))
  3610.  
  3611. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  3612. source = None
  3613. if self.source is not None:
  3614. source = encode(self.source)
  3615. arguments = []
  3616. arguments.append(encode(self.user))
  3617. if self.target is not None:
  3618. arguments.append(encode(self.target))
  3619. if self.channel is not None:
  3620. arguments.append(encode(self.channel))
  3621. return Line(source, b'SUMMON', arguments)
  3622.  
  3623.  
  3624. class Users(Message):
  3625. """
  3626. ``USERS [target]``
  3627. """
  3628.  
  3629. __slots__ = ['target']
  3630.  
  3631. def __init__(self, source: str, target: str = None) -> None:
  3632. self.source = source
  3633. self.target = target
  3634.  
  3635. def __repr__(self) -> str:
  3636. return 'Users(source={}, target={})'.format(repr(self.source), repr(self.target))
  3637.  
  3638. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  3639. source = None
  3640. if self.source is not None:
  3641. source = encode(self.source)
  3642. arguments = []
  3643. if self.target is not None:
  3644. arguments.append(encode(self.target))
  3645. return Line(source, b'USERS', arguments)
  3646.  
  3647.  
  3648. class WallOps(Message):
  3649. """
  3650. ``WALLOPS <message>``
  3651. """
  3652.  
  3653. __slots__ = ['message']
  3654.  
  3655. def __init__(self, source: str, message: str) -> None:
  3656. self.source = source
  3657. self.message = message
  3658.  
  3659. def __repr__(self) -> str:
  3660. return 'WallOps(source={}, message={})'.format(repr(self.source), repr(self.message))
  3661.  
  3662. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  3663. source = None
  3664. if self.source is not None:
  3665. source = encode(self.source)
  3666. arguments = []
  3667. arguments.append(encode(self.message))
  3668. return Line(source, b'WALLOPS', arguments)
  3669.  
  3670.  
  3671. class UserHost(Message):
  3672. """
  3673. ``USERHOST <nickname>``
  3674.  
  3675. FIXME many nicknames.
  3676. """
  3677.  
  3678. __slots__ = ['nickname']
  3679.  
  3680. def __init__(self, source: str, nickname: str) -> None:
  3681. self.source = source
  3682. self.nickname = nickname
  3683.  
  3684. def __repr__(self) -> str:
  3685. return 'UserHost(source={}, nickname={})'.format(repr(self.source), repr(self.nickname))
  3686.  
  3687. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  3688. source = None
  3689. if self.source is not None:
  3690. source = encode(self.source)
  3691. arguments = []
  3692. arguments.append(encode(self.nickname))
  3693. return Line(source, b'USERHOST', arguments)
  3694.  
  3695.  
  3696. class IsOn(Message):
  3697. """
  3698. ``ISON <nickname>``
  3699.  
  3700. FIXME many nicknames.
  3701. """
  3702.  
  3703. __slots__ = ['nickname']
  3704.  
  3705. def __init__(self, source: str, nickname: str) -> None:
  3706. self.source = source
  3707. self.nickname = nickname
  3708.  
  3709. def __repr__(self) -> str:
  3710. return 'IsOn(source={}, nickname={})'.format(repr(self.source), repr(self.nickname))
  3711.  
  3712. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  3713. source = None
  3714. if self.source is not None:
  3715. source = encode(self.source)
  3716. arguments = []
  3717. arguments.append(encode(self.nickname))
  3718. return Line(source, b'ISON', arguments)
  3719.  
  3720.  
  3721. class Welcome(Message):
  3722. """
  3723. ``001 <target> <message>``
  3724. """
  3725.  
  3726. __slots__ = ['target', 'message']
  3727.  
  3728. def __init__(self, source: str, target: str, message: str) -> None:
  3729. self.source = source
  3730. self.target = target
  3731. self.message = message
  3732.  
  3733. def __repr__(self) -> str:
  3734. return 'Welcome(source={}, target={}, message={})'.format(repr(self.source), repr(self.target), repr(self.message))
  3735.  
  3736. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  3737. source = None
  3738. if self.source is not None:
  3739. source = encode(self.source)
  3740. arguments = []
  3741. arguments.append(encode(self.target))
  3742. arguments.append(encode(self.message))
  3743. return Line(source, b"001", arguments)
  3744.  
  3745.  
  3746. class YourHost(Message):
  3747. """
  3748. ``002 <target> <message>``
  3749. """
  3750.  
  3751. __slots__ = ['target', 'message']
  3752.  
  3753. def __init__(self, source: str, target: str, message: str) -> None:
  3754. self.source = source
  3755. self.target = target
  3756. self.message = message
  3757.  
  3758. def __repr__(self) -> str:
  3759. return 'YourHost(source={}, target={}, message={})'.format(repr(self.source), repr(self.target), repr(self.message))
  3760.  
  3761. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  3762. source = None
  3763. if self.source is not None:
  3764. source = encode(self.source)
  3765. arguments = []
  3766. arguments.append(encode(self.target))
  3767. arguments.append(encode(self.message))
  3768. return Line(source, b"002", arguments)
  3769.  
  3770.  
  3771. class Created(Message):
  3772. """
  3773. ``003 <target> <message>``
  3774. """
  3775.  
  3776. __slots__ = ['target', 'message']
  3777.  
  3778. def __init__(self, source: str, target: str, message: str) -> None:
  3779. self.source = source
  3780. self.target = target
  3781. self.message = message
  3782.  
  3783. def __repr__(self) -> str:
  3784. return 'Created(source={}, target={}, message={})'.format(repr(self.source), repr(self.target), repr(self.message))
  3785.  
  3786. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  3787. source = None
  3788. if self.source is not None:
  3789. source = encode(self.source)
  3790. arguments = []
  3791. arguments.append(encode(self.target))
  3792. arguments.append(encode(self.message))
  3793. return Line(source, b"003", arguments)
  3794.  
  3795.  
  3796. class MyInfo(Message):
  3797. """
  3798. ``004 <target> <message>``
  3799. """
  3800.  
  3801. __slots__ = ['target', 'message']
  3802.  
  3803. def __init__(self, source: str, target: str, message: str) -> None:
  3804. self.source = source
  3805. self.target = target
  3806. self.message = message
  3807.  
  3808. def __repr__(self) -> str:
  3809. return 'MyInfo(source={}, target={}, message={})'.format(repr(self.source), repr(self.target), repr(self.message))
  3810.  
  3811. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  3812. source = None
  3813. if self.source is not None:
  3814. source = encode(self.source)
  3815. arguments = []
  3816. arguments.append(encode(self.target))
  3817. arguments.append(encode(self.message))
  3818. return Line(source, b"004", arguments)
  3819.  
  3820.  
  3821. class Bounce(Message):
  3822. """
  3823. ``005 <target> <message>``
  3824. """
  3825.  
  3826. __slots__ = ['target', 'message']
  3827.  
  3828. def __init__(self, source: str, target: str, message: str) -> None:
  3829. self.source = source
  3830. self.target = target
  3831. self.message = message
  3832.  
  3833. def __repr__(self) -> str:
  3834. return 'Bounce(source={}, target={}, message={})'.format(repr(self.source), repr(self.target), repr(self.message))
  3835.  
  3836. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  3837. source = None
  3838. if self.source is not None:
  3839. source = encode(self.source)
  3840. arguments = []
  3841. arguments.append(encode(self.target))
  3842. arguments.append(encode(self.message))
  3843. return Line(source, b"005", arguments)
  3844.  
  3845.  
  3846. class TraceLinkReply(Message):
  3847. """
  3848. ``200 <target> Link <version> <destination> <next> <protocol-version> <link-uptime> <back-send-q> <up-send-q>``
  3849. """
  3850.  
  3851. __slots__ = ['target', 'version', 'destination', 'next', 'protocol_version', 'link_uptime', 'back_send_q', 'up_send_q']
  3852.  
  3853. def __init__(self, source: str, target: str, version: str, destination: str, next: str, protocol_version: str, link_uptime: str, back_send_q: str, up_send_q: str) -> None:
  3854. self.source = source
  3855. self.target = target
  3856. self.version = version
  3857. self.destination = destination
  3858. self.next = next
  3859. self.protocol_version = protocol_version
  3860. self.link_uptime = link_uptime
  3861. self.back_send_q = back_send_q
  3862. self.up_send_q = up_send_q
  3863.  
  3864. def __repr__(self) -> str:
  3865. return 'TraceLinkReply(source={}, target={}, version={}, destination={}, next={}, protocol_version={}, link_uptime={}, back_send_q={}, up_send_q={})'.format(repr(self.source), repr(self.target), repr(self.version), repr(self.destination), repr(self.next), repr(self.protocol_version), repr(self.link_uptime), repr(self.back_send_q), repr(self.up_send_q))
  3866.  
  3867. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  3868. source = None
  3869. if self.source is not None:
  3870. source = encode(self.source)
  3871. arguments = []
  3872. arguments.append(encode(self.target))
  3873. arguments.append(b'Link')
  3874. arguments.append(encode(self.version))
  3875. arguments.append(encode(self.destination))
  3876. arguments.append(encode(self.next))
  3877. arguments.append(encode(self.protocol_version))
  3878. arguments.append(encode(self.link_uptime))
  3879. arguments.append(encode(self.back_send_q))
  3880. arguments.append(encode(self.up_send_q))
  3881. return Line(source, b"200", arguments)
  3882.  
  3883.  
  3884. class TraceConnecting(Message):
  3885. """
  3886. ``201 <target> Try. <class> <server>``
  3887. """
  3888.  
  3889. __slots__ = ['target', 'cls', 'server']
  3890.  
  3891. def __init__(self, source: str, target: str, cls: str, server: str) -> None:
  3892. self.source = source
  3893. self.target = target
  3894. self.cls = cls
  3895. self.server = server
  3896.  
  3897. def __repr__(self) -> str:
  3898. return 'TraceConnecting(source={}, target={}, cls={}, server={})'.format(repr(self.source), repr(self.target), repr(self.cls), repr(self.server))
  3899.  
  3900. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  3901. source = None
  3902. if self.source is not None:
  3903. source = encode(self.source)
  3904. arguments = []
  3905. arguments.append(encode(self.target))
  3906. arguments.append(b'Try.')
  3907. arguments.append(encode(self.cls))
  3908. arguments.append(encode(self.server))
  3909. return Line(source, b"201", arguments)
  3910.  
  3911.  
  3912. class TraceHandshake(Message):
  3913. """
  3914. ``202 <target> H.S. <class> <server>``
  3915. """
  3916.  
  3917. __slots__ = ['target', 'cls', 'server']
  3918.  
  3919. def __init__(self, source: str, target: str, cls: str, server: str) -> None:
  3920. self.source = source
  3921. self.target = target
  3922. self.cls = cls
  3923. self.server = server
  3924.  
  3925. def __repr__(self) -> str:
  3926. return 'TraceHandshake(source={}, target={}, cls={}, server={})'.format(repr(self.source), repr(self.target), repr(self.cls), repr(self.server))
  3927.  
  3928. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  3929. source = None
  3930. if self.source is not None:
  3931. source = encode(self.source)
  3932. arguments = []
  3933. arguments.append(encode(self.target))
  3934. arguments.append(b'H.S.')
  3935. arguments.append(encode(self.cls))
  3936. arguments.append(encode(self.server))
  3937. return Line(source, b"202", arguments)
  3938.  
  3939.  
  3940. class TraceUnknown(Message):
  3941. """
  3942. ``203 <target> ???? <class> [ip]``
  3943. """
  3944.  
  3945. __slots__ = ['target', 'cls', 'ip']
  3946.  
  3947. def __init__(self, source: str, target: str, cls: str, ip: str = None) -> None:
  3948. self.source = source
  3949. self.target = target
  3950. self.cls = cls
  3951. self.ip = ip
  3952.  
  3953. def __repr__(self) -> str:
  3954. return 'TraceUnknown(source={}, target={}, cls={}, ip={})'.format(repr(self.source), repr(self.target), repr(self.cls), repr(self.ip))
  3955.  
  3956. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  3957. source = None
  3958. if self.source is not None:
  3959. source = encode(self.source)
  3960. arguments = []
  3961. arguments.append(encode(self.target))
  3962. arguments.append(b'????')
  3963. arguments.append(encode(self.cls))
  3964. if self.ip is not None:
  3965. arguments.append(encode(self.ip))
  3966. return Line(source, b"203", arguments)
  3967.  
  3968.  
  3969. class TraceOperator(Message):
  3970. """
  3971. ``204 <target> Oper <class> <nickname>``
  3972. """
  3973.  
  3974. __slots__ = ['target', 'cls', 'nickname']
  3975.  
  3976. def __init__(self, source: str, target: str, cls: str, nickname: str) -> None:
  3977. self.source = source
  3978. self.target = target
  3979. self.cls = cls
  3980. self.nickname = nickname
  3981.  
  3982. def __repr__(self) -> str:
  3983. return 'TraceOperator(source={}, target={}, cls={}, nickname={})'.format(repr(self.source), repr(self.target), repr(self.cls), repr(self.nickname))
  3984.  
  3985. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  3986. source = None
  3987. if self.source is not None:
  3988. source = encode(self.source)
  3989. arguments = []
  3990. arguments.append(encode(self.target))
  3991. arguments.append(b'Oper')
  3992. arguments.append(encode(self.cls))
  3993. arguments.append(encode(self.nickname))
  3994. return Line(source, b"204", arguments)
  3995.  
  3996.  
  3997. class TraceUser(Message):
  3998. """
  3999. ``205 <target> User <class> <nickname>``
  4000. """
  4001.  
  4002. __slots__ = ['target', 'cls', 'nickname']
  4003.  
  4004. def __init__(self, source: str, target: str, cls: str, nickname: str) -> None:
  4005. self.source = source
  4006. self.target = target
  4007. self.cls = cls
  4008. self.nickname = nickname
  4009.  
  4010. def __repr__(self) -> str:
  4011. return 'TraceUser(source={}, target={}, cls={}, nickname={})'.format(repr(self.source), repr(self.target), repr(self.cls), repr(self.nickname))
  4012.  
  4013. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  4014. source = None
  4015. if self.source is not None:
  4016. source = encode(self.source)
  4017. arguments = []
  4018. arguments.append(encode(self.target))
  4019. arguments.append(b'User')
  4020. arguments.append(encode(self.cls))
  4021. arguments.append(encode(self.nickname))
  4022. return Line(source, b"205", arguments)
  4023.  
  4024.  
  4025. class TraceServer(Message):
  4026. """
  4027. ``206 <target> Serv <class> <s> <c> <server> <hostmask> <protocol-version>``
  4028. """
  4029.  
  4030. __slots__ = ['target', 'cls', 's', 'c', 'server', 'hostmask', 'protocol_version']
  4031.  
  4032. def __init__(self, source: str, target: str, cls: str, s: str, c: str, server: str, hostmask: str, protocol_version: str) -> None:
  4033. self.source = source
  4034. self.target = target
  4035. self.cls = cls
  4036. self.s = s
  4037. self.c = c
  4038. self.server = server
  4039. self.hostmask = hostmask
  4040. self.protocol_version = protocol_version
  4041.  
  4042. def __repr__(self) -> str:
  4043. return 'TraceServer(source={}, target={}, cls={}, s={}, c={}, server={}, hostmask={}, protocol_version={})'.format(repr(self.source), repr(self.target), repr(self.cls), repr(self.s), repr(self.c), repr(self.server), repr(self.hostmask), repr(self.protocol_version))
  4044.  
  4045. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  4046. source = None
  4047. if self.source is not None:
  4048. source = encode(self.source)
  4049. arguments = []
  4050. arguments.append(encode(self.target))
  4051. arguments.append(b'Serv')
  4052. arguments.append(encode(self.cls))
  4053. arguments.append(encode(self.s))
  4054. arguments.append(encode(self.c))
  4055. arguments.append(encode(self.server))
  4056. arguments.append(encode(self.hostmask))
  4057. arguments.append(encode(self.protocol_version))
  4058. return Line(source, b"206", arguments)
  4059.  
  4060.  
  4061. class TraceService(Message):
  4062. """
  4063. ``207 <target> Service <class> <name> <type> <active-type>``
  4064. """
  4065.  
  4066. __slots__ = ['target', 'cls', 'name', 'type', 'active_type']
  4067.  
  4068. def __init__(self, source: str, target: str, cls: str, name: str, type: str, active_type: str) -> None:
  4069. self.source = source
  4070. self.target = target
  4071. self.cls = cls
  4072. self.name = name
  4073. self.type = type
  4074. self.active_type = active_type
  4075.  
  4076. def __repr__(self) -> str:
  4077. return 'TraceService(source={}, target={}, cls={}, name={}, type={}, active_type={})'.format(repr(self.source), repr(self.target), repr(self.cls), repr(self.name), repr(self.type), repr(self.active_type))
  4078.  
  4079. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  4080. source = None
  4081. if self.source is not None:
  4082. source = encode(self.source)
  4083. arguments = []
  4084. arguments.append(encode(self.target))
  4085. arguments.append(b'Service')
  4086. arguments.append(encode(self.cls))
  4087. arguments.append(encode(self.name))
  4088. arguments.append(encode(self.type))
  4089. arguments.append(encode(self.active_type))
  4090. return Line(source, b"207", arguments)
  4091.  
  4092.  
  4093. class TraceNewtype(Message):
  4094. """
  4095. ``208 <target> <newtype> 0 <name>``
  4096. """
  4097.  
  4098. __slots__ = ['target', 'newtype', 'name']
  4099.  
  4100. def __init__(self, source: str, target: str, newtype: str, name: str) -> None:
  4101. self.source = source
  4102. self.target = target
  4103. self.newtype = newtype
  4104. self.name = name
  4105.  
  4106. def __repr__(self) -> str:
  4107. return 'TraceNewtype(source={}, target={}, newtype={}, name={})'.format(repr(self.source), repr(self.target), repr(self.newtype), repr(self.name))
  4108.  
  4109. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  4110. source = None
  4111. if self.source is not None:
  4112. source = encode(self.source)
  4113. arguments = []
  4114. arguments.append(encode(self.target))
  4115. arguments.append(encode(self.newtype))
  4116. arguments.append(b'0')
  4117. arguments.append(encode(self.name))
  4118. return Line(source, b"208", arguments)
  4119.  
  4120.  
  4121. class TraceClass(Message):
  4122. """
  4123. ``209 <target> Class <class> <int:count>``
  4124. """
  4125.  
  4126. __slots__ = ['target', 'cls', 'count']
  4127.  
  4128. def __init__(self, source: str, target: str, cls: str, count: int) -> None:
  4129. self.source = source
  4130. self.target = target
  4131. self.cls = cls
  4132. self.count = count
  4133.  
  4134. def __repr__(self) -> str:
  4135. return 'TraceClass(source={}, target={}, cls={}, count={})'.format(repr(self.source), repr(self.target), repr(self.cls), repr(self.count))
  4136.  
  4137. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  4138. source = None
  4139. if self.source is not None:
  4140. source = encode(self.source)
  4141. arguments = []
  4142. arguments.append(encode(self.target))
  4143. arguments.append(b'Class')
  4144. arguments.append(encode(self.cls))
  4145. arguments.append(encode(str(self.count)))
  4146. return Line(source, b"209", arguments)
  4147.  
  4148.  
  4149. class StatsLinkInfo(Message):
  4150. """
  4151. ``211 <target> <name> <sendq> <int:sent-messages> <int:sent-kbytes> <int:recv-messages> <int:recv-kbytes> <int:uptime>``
  4152. """
  4153.  
  4154. __slots__ = ['target', 'name', 'sendq', 'sent_messages', 'sent_kbytes', 'recv_messages', 'recv_kbytes', 'uptime']
  4155.  
  4156. def __init__(self, source: str, target: str, name: str, sendq: str, sent_messages: int, sent_kbytes: int, recv_messages: int, recv_kbytes: int, uptime: int) -> None:
  4157. self.source = source
  4158. self.target = target
  4159. self.name = name
  4160. self.sendq = sendq
  4161. self.sent_messages = sent_messages
  4162. self.sent_kbytes = sent_kbytes
  4163. self.recv_messages = recv_messages
  4164. self.recv_kbytes = recv_kbytes
  4165. self.uptime = uptime
  4166.  
  4167. def __repr__(self) -> str:
  4168. return 'StatsLinkInfo(source={}, target={}, name={}, sendq={}, sent_messages={}, sent_kbytes={}, recv_messages={}, recv_kbytes={}, uptime={})'.format(repr(self.source), repr(self.target), repr(self.name), repr(self.sendq), repr(self.sent_messages), repr(self.sent_kbytes), repr(self.recv_messages), repr(self.recv_kbytes), repr(self.uptime))
  4169.  
  4170. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  4171. source = None
  4172. if self.source is not None:
  4173. source = encode(self.source)
  4174. arguments = []
  4175. arguments.append(encode(self.target))
  4176. arguments.append(encode(self.name))
  4177. arguments.append(encode(self.sendq))
  4178. arguments.append(encode(str(self.sent_messages)))
  4179. arguments.append(encode(str(self.sent_kbytes)))
  4180. arguments.append(encode(str(self.recv_messages)))
  4181. arguments.append(encode(str(self.recv_kbytes)))
  4182. arguments.append(encode(str(self.uptime)))
  4183. return Line(source, b"211", arguments)
  4184.  
  4185.  
  4186. class StatsCommands(Message):
  4187. """
  4188. ``212 <target> <command> <int:count> <int:bytes> <int:remote-count>``
  4189. """
  4190.  
  4191. __slots__ = ['target', 'command', 'count', 'bytecount', 'remote_count']
  4192.  
  4193. def __init__(self, source: str, target: str, command: str, count: int, bytecount: int, remote_count: int) -> None:
  4194. self.source = source
  4195. self.target = target
  4196. self.command = command
  4197. self.count = count
  4198. self.bytecount = bytecount
  4199. self.remote_count = remote_count
  4200.  
  4201. def __repr__(self) -> str:
  4202. return 'StatsCommands(source={}, target={}, command={}, count={}, bytecount={}, remote_count={})'.format(repr(self.source), repr(self.target), repr(self.command), repr(self.count), repr(self.bytecount), repr(self.remote_count))
  4203.  
  4204. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  4205. source = None
  4206. if self.source is not None:
  4207. source = encode(self.source)
  4208. arguments = []
  4209. arguments.append(encode(self.target))
  4210. arguments.append(encode(self.command))
  4211. arguments.append(encode(str(self.count)))
  4212. arguments.append(encode(str(self.bytecount)))
  4213. arguments.append(encode(str(self.remote_count)))
  4214. return Line(source, b"212", arguments)
  4215.  
  4216.  
  4217. class StatsEnd(Message):
  4218. """
  4219. ``219 <target> <letter> :End of STATS report``
  4220. """
  4221.  
  4222. __slots__ = ['target', 'letter']
  4223.  
  4224. def __init__(self, source: str, target: str, letter: str) -> None:
  4225. self.source = source
  4226. self.target = target
  4227. self.letter = letter
  4228.  
  4229. def __repr__(self) -> str:
  4230. return 'StatsEnd(source={}, target={}, letter={})'.format(repr(self.source), repr(self.target), repr(self.letter))
  4231.  
  4232. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  4233. source = None
  4234. if self.source is not None:
  4235. source = encode(self.source)
  4236. arguments = []
  4237. arguments.append(encode(self.target))
  4238. arguments.append(encode(self.letter))
  4239. arguments.append(b'End of STATS report')
  4240. return Line(source, b"219", arguments)
  4241.  
  4242.  
  4243. class UserModeIs(Message):
  4244. """
  4245. ``221 <target> <mode>``
  4246. """
  4247.  
  4248. __slots__ = ['target', 'mode']
  4249.  
  4250. def __init__(self, source: str, target: str, mode: str) -> None:
  4251. self.source = source
  4252. self.target = target
  4253. self.mode = mode
  4254.  
  4255. def __repr__(self) -> str:
  4256. return 'UserModeIs(source={}, target={}, mode={})'.format(repr(self.source), repr(self.target), repr(self.mode))
  4257.  
  4258. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  4259. source = None
  4260. if self.source is not None:
  4261. source = encode(self.source)
  4262. arguments = []
  4263. arguments.append(encode(self.target))
  4264. arguments.append(encode(self.mode))
  4265. return Line(source, b"221", arguments)
  4266.  
  4267.  
  4268. class ServListReply(Message):
  4269. """
  4270. ``234 <target> <name> <server> <mask> <type> <int:hopcount> <info>``
  4271. """
  4272.  
  4273. __slots__ = ['target', 'name', 'server', 'mask', 'type', 'hopcount', 'info']
  4274.  
  4275. def __init__(self, source: str, target: str, name: str, server: str, mask: str, type: str, hopcount: int, info: str) -> None:
  4276. self.source = source
  4277. self.target = target
  4278. self.name = name
  4279. self.server = server
  4280. self.mask = mask
  4281. self.type = type
  4282. self.hopcount = hopcount
  4283. self.info = info
  4284.  
  4285. def __repr__(self) -> str:
  4286. return 'ServListReply(source={}, target={}, name={}, server={}, mask={}, type={}, hopcount={}, info={})'.format(repr(self.source), repr(self.target), repr(self.name), repr(self.server), repr(self.mask), repr(self.type), repr(self.hopcount), repr(self.info))
  4287.  
  4288. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  4289. source = None
  4290. if self.source is not None:
  4291. source = encode(self.source)
  4292. arguments = []
  4293. arguments.append(encode(self.target))
  4294. arguments.append(encode(self.name))
  4295. arguments.append(encode(self.server))
  4296. arguments.append(encode(self.mask))
  4297. arguments.append(encode(self.type))
  4298. arguments.append(encode(str(self.hopcount)))
  4299. arguments.append(encode(self.info))
  4300. return Line(source, b"234", arguments)
  4301.  
  4302.  
  4303. class ServListEnd(Message):
  4304. """
  4305. ``235 <target> <mask> <type> :End of service listing``
  4306. """
  4307.  
  4308. __slots__ = ['target', 'mask', 'type']
  4309.  
  4310. def __init__(self, source: str, target: str, mask: str, type: str) -> None:
  4311. self.source = source
  4312. self.target = target
  4313. self.mask = mask
  4314. self.type = type
  4315.  
  4316. def __repr__(self) -> str:
  4317. return 'ServListEnd(source={}, target={}, mask={}, type={})'.format(repr(self.source), repr(self.target), repr(self.mask), repr(self.type))
  4318.  
  4319. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  4320. source = None
  4321. if self.source is not None:
  4322. source = encode(self.source)
  4323. arguments = []
  4324. arguments.append(encode(self.target))
  4325. arguments.append(encode(self.mask))
  4326. arguments.append(encode(self.type))
  4327. arguments.append(b'End of service listing')
  4328. return Line(source, b"235", arguments)
  4329.  
  4330.  
  4331. class StatsUptime(Message):
  4332. """
  4333. ``242 <target> <message>``
  4334. """
  4335.  
  4336. __slots__ = ['target', 'message']
  4337.  
  4338. def __init__(self, source: str, target: str, message: str) -> None:
  4339. self.source = source
  4340. self.target = target
  4341. self.message = message
  4342.  
  4343. def __repr__(self) -> str:
  4344. return 'StatsUptime(source={}, target={}, message={})'.format(repr(self.source), repr(self.target), repr(self.message))
  4345.  
  4346. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  4347. source = None
  4348. if self.source is not None:
  4349. source = encode(self.source)
  4350. arguments = []
  4351. arguments.append(encode(self.target))
  4352. arguments.append(encode(self.message))
  4353. return Line(source, b"242", arguments)
  4354.  
  4355.  
  4356. class StatsOline(Message):
  4357. """
  4358. ``243 <target> O <hostmask> * <name>``
  4359. """
  4360.  
  4361. __slots__ = ['target', 'hostmask', 'name']
  4362.  
  4363. def __init__(self, source: str, target: str, hostmask: str, name: str) -> None:
  4364. self.source = source
  4365. self.target = target
  4366. self.hostmask = hostmask
  4367. self.name = name
  4368.  
  4369. def __repr__(self) -> str:
  4370. return 'StatsOline(source={}, target={}, hostmask={}, name={})'.format(repr(self.source), repr(self.target), repr(self.hostmask), repr(self.name))
  4371.  
  4372. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  4373. source = None
  4374. if self.source is not None:
  4375. source = encode(self.source)
  4376. arguments = []
  4377. arguments.append(encode(self.target))
  4378. arguments.append(b'O')
  4379. arguments.append(encode(self.hostmask))
  4380. arguments.append(b'*')
  4381. arguments.append(encode(self.name))
  4382. return Line(source, b"243", arguments)
  4383.  
  4384.  
  4385. class LuserClient(Message):
  4386. """
  4387. ``251 <target> <message>``
  4388. """
  4389.  
  4390. __slots__ = ['target', 'message']
  4391.  
  4392. def __init__(self, source: str, target: str, message: str) -> None:
  4393. self.source = source
  4394. self.target = target
  4395. self.message = message
  4396.  
  4397. def __repr__(self) -> str:
  4398. return 'LuserClient(source={}, target={}, message={})'.format(repr(self.source), repr(self.target), repr(self.message))
  4399.  
  4400. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  4401. source = None
  4402. if self.source is not None:
  4403. source = encode(self.source)
  4404. arguments = []
  4405. arguments.append(encode(self.target))
  4406. arguments.append(encode(self.message))
  4407. return Line(source, b"251", arguments)
  4408.  
  4409.  
  4410. class LuserOp(Message):
  4411. """
  4412. ``252 <target> <int:count> :operator(s) online``
  4413. """
  4414.  
  4415. __slots__ = ['target', 'count']
  4416.  
  4417. def __init__(self, source: str, target: str, count: int) -> None:
  4418. self.source = source
  4419. self.target = target
  4420. self.count = count
  4421.  
  4422. def __repr__(self) -> str:
  4423. return 'LuserOp(source={}, target={}, count={})'.format(repr(self.source), repr(self.target), repr(self.count))
  4424.  
  4425. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  4426. source = None
  4427. if self.source is not None:
  4428. source = encode(self.source)
  4429. arguments = []
  4430. arguments.append(encode(self.target))
  4431. arguments.append(encode(str(self.count)))
  4432. arguments.append(b'operator(s) online')
  4433. return Line(source, b"252", arguments)
  4434.  
  4435.  
  4436. class LuserUnknown(Message):
  4437. """
  4438. ``253 <target> <int:count> :unknown connection(s)``
  4439. """
  4440.  
  4441. __slots__ = ['target', 'count']
  4442.  
  4443. def __init__(self, source: str, target: str, count: int) -> None:
  4444. self.source = source
  4445. self.target = target
  4446. self.count = count
  4447.  
  4448. def __repr__(self) -> str:
  4449. return 'LuserUnknown(source={}, target={}, count={})'.format(repr(self.source), repr(self.target), repr(self.count))
  4450.  
  4451. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  4452. source = None
  4453. if self.source is not None:
  4454. source = encode(self.source)
  4455. arguments = []
  4456. arguments.append(encode(self.target))
  4457. arguments.append(encode(str(self.count)))
  4458. arguments.append(b'unknown connection(s)')
  4459. return Line(source, b"253", arguments)
  4460.  
  4461.  
  4462. class LuserChannels(Message):
  4463. """
  4464. ``254 <target> <int:count> :channels formed``
  4465. """
  4466.  
  4467. __slots__ = ['target', 'count']
  4468.  
  4469. def __init__(self, source: str, target: str, count: int) -> None:
  4470. self.source = source
  4471. self.target = target
  4472. self.count = count
  4473.  
  4474. def __repr__(self) -> str:
  4475. return 'LuserChannels(source={}, target={}, count={})'.format(repr(self.source), repr(self.target), repr(self.count))
  4476.  
  4477. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  4478. source = None
  4479. if self.source is not None:
  4480. source = encode(self.source)
  4481. arguments = []
  4482. arguments.append(encode(self.target))
  4483. arguments.append(encode(str(self.count)))
  4484. arguments.append(b'channels formed')
  4485. return Line(source, b"254", arguments)
  4486.  
  4487.  
  4488. class LuserMe(Message):
  4489. """
  4490. ``255 <target> <message>``
  4491. """
  4492.  
  4493. __slots__ = ['target', 'message']
  4494.  
  4495. def __init__(self, source: str, target: str, message: str) -> None:
  4496. self.source = source
  4497. self.target = target
  4498. self.message = message
  4499.  
  4500. def __repr__(self) -> str:
  4501. return 'LuserMe(source={}, target={}, message={})'.format(repr(self.source), repr(self.target), repr(self.message))
  4502.  
  4503. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  4504. source = None
  4505. if self.source is not None:
  4506. source = encode(self.source)
  4507. arguments = []
  4508. arguments.append(encode(self.target))
  4509. arguments.append(encode(self.message))
  4510. return Line(source, b"255", arguments)
  4511.  
  4512.  
  4513. class AdminMe(Message):
  4514. """
  4515. ``256 <target> <server> :Administrative info``
  4516. """
  4517.  
  4518. __slots__ = ['target', 'server']
  4519.  
  4520. def __init__(self, source: str, target: str, server: str) -> None:
  4521. self.source = source
  4522. self.target = target
  4523. self.server = server
  4524.  
  4525. def __repr__(self) -> str:
  4526. return 'AdminMe(source={}, target={}, server={})'.format(repr(self.source), repr(self.target), repr(self.server))
  4527.  
  4528. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  4529. source = None
  4530. if self.source is not None:
  4531. source = encode(self.source)
  4532. arguments = []
  4533. arguments.append(encode(self.target))
  4534. arguments.append(encode(self.server))
  4535. arguments.append(b'Administrative info')
  4536. return Line(source, b"256", arguments)
  4537.  
  4538.  
  4539. class AdminLoc1(Message):
  4540. """
  4541. ``257 <target> <message>``
  4542. """
  4543.  
  4544. __slots__ = ['target', 'message']
  4545.  
  4546. def __init__(self, source: str, target: str, message: str) -> None:
  4547. self.source = source
  4548. self.target = target
  4549. self.message = message
  4550.  
  4551. def __repr__(self) -> str:
  4552. return 'AdminLoc1(source={}, target={}, message={})'.format(repr(self.source), repr(self.target), repr(self.message))
  4553.  
  4554. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  4555. source = None
  4556. if self.source is not None:
  4557. source = encode(self.source)
  4558. arguments = []
  4559. arguments.append(encode(self.target))
  4560. arguments.append(encode(self.message))
  4561. return Line(source, b"257", arguments)
  4562.  
  4563.  
  4564. class AdminLoc2(Message):
  4565. """
  4566. ``258 <target> <message>``
  4567. """
  4568.  
  4569. __slots__ = ['target', 'message']
  4570.  
  4571. def __init__(self, source: str, target: str, message: str) -> None:
  4572. self.source = source
  4573. self.target = target
  4574. self.message = message
  4575.  
  4576. def __repr__(self) -> str:
  4577. return 'AdminLoc2(source={}, target={}, message={})'.format(repr(self.source), repr(self.target), repr(self.message))
  4578.  
  4579. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  4580. source = None
  4581. if self.source is not None:
  4582. source = encode(self.source)
  4583. arguments = []
  4584. arguments.append(encode(self.target))
  4585. arguments.append(encode(self.message))
  4586. return Line(source, b"258", arguments)
  4587.  
  4588.  
  4589. class AdminEmail(Message):
  4590. """
  4591. ``259 <target> <email>``
  4592. """
  4593.  
  4594. __slots__ = ['target', 'email']
  4595.  
  4596. def __init__(self, source: str, target: str, email: str) -> None:
  4597. self.source = source
  4598. self.target = target
  4599. self.email = email
  4600.  
  4601. def __repr__(self) -> str:
  4602. return 'AdminEmail(source={}, target={}, email={})'.format(repr(self.source), repr(self.target), repr(self.email))
  4603.  
  4604. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  4605. source = None
  4606. if self.source is not None:
  4607. source = encode(self.source)
  4608. arguments = []
  4609. arguments.append(encode(self.target))
  4610. arguments.append(encode(self.email))
  4611. return Line(source, b"259", arguments)
  4612.  
  4613.  
  4614. class TraceLog(Message):
  4615. """
  4616. ``261 <target> File <logfile> <debug-level>``
  4617. """
  4618.  
  4619. __slots__ = ['target', 'logfile', 'debug_level']
  4620.  
  4621. def __init__(self, source: str, target: str, logfile: str, debug_level: str) -> None:
  4622. self.source = source
  4623. self.target = target
  4624. self.logfile = logfile
  4625. self.debug_level = debug_level
  4626.  
  4627. def __repr__(self) -> str:
  4628. return 'TraceLog(source={}, target={}, logfile={}, debug_level={})'.format(repr(self.source), repr(self.target), repr(self.logfile), repr(self.debug_level))
  4629.  
  4630. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  4631. source = None
  4632. if self.source is not None:
  4633. source = encode(self.source)
  4634. arguments = []
  4635. arguments.append(encode(self.target))
  4636. arguments.append(b'File')
  4637. arguments.append(encode(self.logfile))
  4638. arguments.append(encode(self.debug_level))
  4639. return Line(source, b"261", arguments)
  4640.  
  4641.  
  4642. class TraceEnd(Message):
  4643. """
  4644. ``262 <target> <server> <version> :End of TRACE``
  4645. """
  4646.  
  4647. __slots__ = ['target', 'server', 'version']
  4648.  
  4649. def __init__(self, source: str, target: str, server: str, version: str) -> None:
  4650. self.source = source
  4651. self.target = target
  4652. self.server = server
  4653. self.version = version
  4654.  
  4655. def __repr__(self) -> str:
  4656. return 'TraceEnd(source={}, target={}, server={}, version={})'.format(repr(self.source), repr(self.target), repr(self.server), repr(self.version))
  4657.  
  4658. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  4659. source = None
  4660. if self.source is not None:
  4661. source = encode(self.source)
  4662. arguments = []
  4663. arguments.append(encode(self.target))
  4664. arguments.append(encode(self.server))
  4665. arguments.append(encode(self.version))
  4666. arguments.append(b'End of TRACE')
  4667. return Line(source, b"262", arguments)
  4668.  
  4669.  
  4670. class TryAgain(Message):
  4671. """
  4672. ``263 <target> <command> :Please wait a while and try again.``
  4673. """
  4674.  
  4675. __slots__ = ['target', 'command']
  4676.  
  4677. def __init__(self, source: str, target: str, command: str) -> None:
  4678. self.source = source
  4679. self.target = target
  4680. self.command = command
  4681.  
  4682. def __repr__(self) -> str:
  4683. return 'TryAgain(source={}, target={}, command={})'.format(repr(self.source), repr(self.target), repr(self.command))
  4684.  
  4685. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  4686. source = None
  4687. if self.source is not None:
  4688. source = encode(self.source)
  4689. arguments = []
  4690. arguments.append(encode(self.target))
  4691. arguments.append(encode(self.command))
  4692. arguments.append(b'Please wait a while and try again.')
  4693. return Line(source, b"263", arguments)
  4694.  
  4695.  
  4696. class AwayReply(Message):
  4697. """
  4698. ``301 <target> <nickname> <message>``
  4699. """
  4700.  
  4701. __slots__ = ['target', 'nickname', 'message']
  4702.  
  4703. def __init__(self, source: str, target: str, nickname: str, message: str) -> None:
  4704. self.source = source
  4705. self.target = target
  4706. self.nickname = nickname
  4707. self.message = message
  4708.  
  4709. def __repr__(self) -> str:
  4710. return 'AwayReply(source={}, target={}, nickname={}, message={})'.format(repr(self.source), repr(self.target), repr(self.nickname), repr(self.message))
  4711.  
  4712. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  4713. source = None
  4714. if self.source is not None:
  4715. source = encode(self.source)
  4716. arguments = []
  4717. arguments.append(encode(self.target))
  4718. arguments.append(encode(self.nickname))
  4719. arguments.append(encode(self.message))
  4720. return Line(source, b"301", arguments)
  4721.  
  4722.  
  4723. class UserHostReply(Message):
  4724. """
  4725. ``302 <target> <message>``
  4726.  
  4727. FIXME parse data!
  4728. """
  4729.  
  4730. __slots__ = ['target', 'message']
  4731.  
  4732. def __init__(self, source: str, target: str, message: str) -> None:
  4733. self.source = source
  4734. self.target = target
  4735. self.message = message
  4736.  
  4737. def __repr__(self) -> str:
  4738. return 'UserHostReply(source={}, target={}, message={})'.format(repr(self.source), repr(self.target), repr(self.message))
  4739.  
  4740. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  4741. source = None
  4742. if self.source is not None:
  4743. source = encode(self.source)
  4744. arguments = []
  4745. arguments.append(encode(self.target))
  4746. arguments.append(encode(self.message))
  4747. return Line(source, b"302", arguments)
  4748.  
  4749.  
  4750. class IsOnReply(Message):
  4751. """
  4752. ``303 <target> <message>``
  4753.  
  4754. FIXME parse data!
  4755. """
  4756.  
  4757. __slots__ = ['target', 'message']
  4758.  
  4759. def __init__(self, source: str, target: str, message: str) -> None:
  4760. self.source = source
  4761. self.target = target
  4762. self.message = message
  4763.  
  4764. def __repr__(self) -> str:
  4765. return 'IsOnReply(source={}, target={}, message={})'.format(repr(self.source), repr(self.target), repr(self.message))
  4766.  
  4767. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  4768. source = None
  4769. if self.source is not None:
  4770. source = encode(self.source)
  4771. arguments = []
  4772. arguments.append(encode(self.target))
  4773. arguments.append(encode(self.message))
  4774. return Line(source, b"303", arguments)
  4775.  
  4776.  
  4777. class UnawayReply(Message):
  4778. """
  4779. ``305 <target> :You are no longer marked as being away``
  4780. """
  4781.  
  4782. __slots__ = ['target']
  4783.  
  4784. def __init__(self, source: str, target: str) -> None:
  4785. self.source = source
  4786. self.target = target
  4787.  
  4788. def __repr__(self) -> str:
  4789. return 'UnawayReply(source={}, target={})'.format(repr(self.source), repr(self.target))
  4790.  
  4791. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  4792. source = None
  4793. if self.source is not None:
  4794. source = encode(self.source)
  4795. arguments = []
  4796. arguments.append(encode(self.target))
  4797. arguments.append(b'You are no longer marked as being away')
  4798. return Line(source, b"305", arguments)
  4799.  
  4800.  
  4801. class NowAwayReply(Message):
  4802. """
  4803. ``306 <target> :You have been marked as being away``
  4804. """
  4805.  
  4806. __slots__ = ['target']
  4807.  
  4808. def __init__(self, source: str, target: str) -> None:
  4809. self.source = source
  4810. self.target = target
  4811.  
  4812. def __repr__(self) -> str:
  4813. return 'NowAwayReply(source={}, target={})'.format(repr(self.source), repr(self.target))
  4814.  
  4815. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  4816. source = None
  4817. if self.source is not None:
  4818. source = encode(self.source)
  4819. arguments = []
  4820. arguments.append(encode(self.target))
  4821. arguments.append(b'You have been marked as being away')
  4822. return Line(source, b"306", arguments)
  4823.  
  4824.  
  4825. class WhoIsUser(Message):
  4826. """
  4827. ``311 <target> <nickname> <user> <host> * <realname>``
  4828. """
  4829.  
  4830. __slots__ = ['target', 'nickname', 'user', 'host', 'realname']
  4831.  
  4832. def __init__(self, source: str, target: str, nickname: str, user: str, host: str, realname: str) -> None:
  4833. self.source = source
  4834. self.target = target
  4835. self.nickname = nickname
  4836. self.user = user
  4837. self.host = host
  4838. self.realname = realname
  4839.  
  4840. def __repr__(self) -> str:
  4841. return 'WhoIsUser(source={}, target={}, nickname={}, user={}, host={}, realname={})'.format(repr(self.source), repr(self.target), repr(self.nickname), repr(self.user), repr(self.host), repr(self.realname))
  4842.  
  4843. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  4844. source = None
  4845. if self.source is not None:
  4846. source = encode(self.source)
  4847. arguments = []
  4848. arguments.append(encode(self.target))
  4849. arguments.append(encode(self.nickname))
  4850. arguments.append(encode(self.user))
  4851. arguments.append(encode(self.host))
  4852. arguments.append(b'*')
  4853. arguments.append(encode(self.realname))
  4854. return Line(source, b"311", arguments)
  4855.  
  4856.  
  4857. class WhoIsServer(Message):
  4858. """
  4859. ``312 <target> <nickname> <server> <info>``
  4860. """
  4861.  
  4862. __slots__ = ['target', 'nickname', 'server', 'info']
  4863.  
  4864. def __init__(self, source: str, target: str, nickname: str, server: str, info: str) -> None:
  4865. self.source = source
  4866. self.target = target
  4867. self.nickname = nickname
  4868. self.server = server
  4869. self.info = info
  4870.  
  4871. def __repr__(self) -> str:
  4872. return 'WhoIsServer(source={}, target={}, nickname={}, server={}, info={})'.format(repr(self.source), repr(self.target), repr(self.nickname), repr(self.server), repr(self.info))
  4873.  
  4874. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  4875. source = None
  4876. if self.source is not None:
  4877. source = encode(self.source)
  4878. arguments = []
  4879. arguments.append(encode(self.target))
  4880. arguments.append(encode(self.nickname))
  4881. arguments.append(encode(self.server))
  4882. arguments.append(encode(self.info))
  4883. return Line(source, b"312", arguments)
  4884.  
  4885.  
  4886. class WhoIsOperator(Message):
  4887. """
  4888. ``313 <target> <nickname> :is an IRC operator``
  4889. """
  4890.  
  4891. __slots__ = ['target', 'nickname']
  4892.  
  4893. def __init__(self, source: str, target: str, nickname: str) -> None:
  4894. self.source = source
  4895. self.target = target
  4896. self.nickname = nickname
  4897.  
  4898. def __repr__(self) -> str:
  4899. return 'WhoIsOperator(source={}, target={}, nickname={})'.format(repr(self.source), repr(self.target), repr(self.nickname))
  4900.  
  4901. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  4902. source = None
  4903. if self.source is not None:
  4904. source = encode(self.source)
  4905. arguments = []
  4906. arguments.append(encode(self.target))
  4907. arguments.append(encode(self.nickname))
  4908. arguments.append(b'is an IRC operator')
  4909. return Line(source, b"313", arguments)
  4910.  
  4911.  
  4912. class WhoWasUser(Message):
  4913. """
  4914. ``314 <target> <nickname> <user> <host> * <realname>``
  4915. """
  4916.  
  4917. __slots__ = ['target', 'nickname', 'user', 'host', 'realname']
  4918.  
  4919. def __init__(self, source: str, target: str, nickname: str, user: str, host: str, realname: str) -> None:
  4920. self.source = source
  4921. self.target = target
  4922. self.nickname = nickname
  4923. self.user = user
  4924. self.host = host
  4925. self.realname = realname
  4926.  
  4927. def __repr__(self) -> str:
  4928. return 'WhoWasUser(source={}, target={}, nickname={}, user={}, host={}, realname={})'.format(repr(self.source), repr(self.target), repr(self.nickname), repr(self.user), repr(self.host), repr(self.realname))
  4929.  
  4930. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  4931. source = None
  4932. if self.source is not None:
  4933. source = encode(self.source)
  4934. arguments = []
  4935. arguments.append(encode(self.target))
  4936. arguments.append(encode(self.nickname))
  4937. arguments.append(encode(self.user))
  4938. arguments.append(encode(self.host))
  4939. arguments.append(b'*')
  4940. arguments.append(encode(self.realname))
  4941. return Line(source, b"314", arguments)
  4942.  
  4943.  
  4944. class WhoEnd(Message):
  4945. """
  4946. ``315 <target> <name> :End of WHO list``
  4947. """
  4948.  
  4949. __slots__ = ['target', 'name']
  4950.  
  4951. def __init__(self, source: str, target: str, name: str) -> None:
  4952. self.source = source
  4953. self.target = target
  4954. self.name = name
  4955.  
  4956. def __repr__(self) -> str:
  4957. return 'WhoEnd(source={}, target={}, name={})'.format(repr(self.source), repr(self.target), repr(self.name))
  4958.  
  4959. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  4960. source = None
  4961. if self.source is not None:
  4962. source = encode(self.source)
  4963. arguments = []
  4964. arguments.append(encode(self.target))
  4965. arguments.append(encode(self.name))
  4966. arguments.append(b'End of WHO list')
  4967. return Line(source, b"315", arguments)
  4968.  
  4969.  
  4970. class WhoIsIdle(Message):
  4971. """
  4972. ``317 <target> <nickname> <int:time> :seconds idle``
  4973. """
  4974.  
  4975. __slots__ = ['target', 'nickname', 'time']
  4976.  
  4977. def __init__(self, source: str, target: str, nickname: str, time: int) -> None:
  4978. self.source = source
  4979. self.target = target
  4980. self.nickname = nickname
  4981. self.time = time
  4982.  
  4983. def __repr__(self) -> str:
  4984. return 'WhoIsIdle(source={}, target={}, nickname={}, time={})'.format(repr(self.source), repr(self.target), repr(self.nickname), repr(self.time))
  4985.  
  4986. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  4987. source = None
  4988. if self.source is not None:
  4989. source = encode(self.source)
  4990. arguments = []
  4991. arguments.append(encode(self.target))
  4992. arguments.append(encode(self.nickname))
  4993. arguments.append(encode(str(self.time)))
  4994. arguments.append(b'seconds idle')
  4995. return Line(source, b"317", arguments)
  4996.  
  4997.  
  4998. class WhoIsEnd(Message):
  4999. """
  5000. ``318 <target> <nickname> :End of WHOIS list``
  5001. """
  5002.  
  5003. __slots__ = ['target', 'nickname']
  5004.  
  5005. def __init__(self, source: str, target: str, nickname: str) -> None:
  5006. self.source = source
  5007. self.target = target
  5008. self.nickname = nickname
  5009.  
  5010. def __repr__(self) -> str:
  5011. return 'WhoIsEnd(source={}, target={}, nickname={})'.format(repr(self.source), repr(self.target), repr(self.nickname))
  5012.  
  5013. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  5014. source = None
  5015. if self.source is not None:
  5016. source = encode(self.source)
  5017. arguments = []
  5018. arguments.append(encode(self.target))
  5019. arguments.append(encode(self.nickname))
  5020. arguments.append(b'End of WHOIS list')
  5021. return Line(source, b"318", arguments)
  5022.  
  5023.  
  5024. class WhoIsChannels(Message):
  5025. """
  5026. ``319 <target> <nickname> <channels>``
  5027. """
  5028.  
  5029. __slots__ = ['target', 'nickname', 'channels']
  5030.  
  5031. def __init__(self, source: str, target: str, nickname: str, channels: str) -> None:
  5032. self.source = source
  5033. self.target = target
  5034. self.nickname = nickname
  5035. self.channels = channels
  5036.  
  5037. def __repr__(self) -> str:
  5038. return 'WhoIsChannels(source={}, target={}, nickname={}, channels={})'.format(repr(self.source), repr(self.target), repr(self.nickname), repr(self.channels))
  5039.  
  5040. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  5041. source = None
  5042. if self.source is not None:
  5043. source = encode(self.source)
  5044. arguments = []
  5045. arguments.append(encode(self.target))
  5046. arguments.append(encode(self.nickname))
  5047. arguments.append(encode(self.channels))
  5048. return Line(source, b"319", arguments)
  5049.  
  5050.  
  5051. class ListReply(Message):
  5052. """
  5053. ``322 <target> <channel> <int:visible> <topic>``
  5054. """
  5055.  
  5056. __slots__ = ['target', 'channel', 'visible', 'topic']
  5057.  
  5058. def __init__(self, source: str, target: str, channel: str, visible: int, topic: str) -> None:
  5059. self.source = source
  5060. self.target = target
  5061. self.channel = channel
  5062. self.visible = visible
  5063. self.topic = topic
  5064.  
  5065. def __repr__(self) -> str:
  5066. return 'ListReply(source={}, target={}, channel={}, visible={}, topic={})'.format(repr(self.source), repr(self.target), repr(self.channel), repr(self.visible), repr(self.topic))
  5067.  
  5068. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  5069. source = None
  5070. if self.source is not None:
  5071. source = encode(self.source)
  5072. arguments = []
  5073. arguments.append(encode(self.target))
  5074. arguments.append(encode(self.channel))
  5075. arguments.append(encode(str(self.visible)))
  5076. arguments.append(encode(self.topic))
  5077. return Line(source, b"322", arguments)
  5078.  
  5079.  
  5080. class ListEnd(Message):
  5081. """
  5082. ``323 <target> :End of LIST``
  5083. """
  5084.  
  5085. __slots__ = ['target']
  5086.  
  5087. def __init__(self, source: str, target: str) -> None:
  5088. self.source = source
  5089. self.target = target
  5090.  
  5091. def __repr__(self) -> str:
  5092. return 'ListEnd(source={}, target={})'.format(repr(self.source), repr(self.target))
  5093.  
  5094. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  5095. source = None
  5096. if self.source is not None:
  5097. source = encode(self.source)
  5098. arguments = []
  5099. arguments.append(encode(self.target))
  5100. arguments.append(b'End of LIST')
  5101. return Line(source, b"323", arguments)
  5102.  
  5103.  
  5104. class ChannelModeIs(Message):
  5105. """
  5106. ``324 <target> <channel> <mode> <params>``
  5107. """
  5108.  
  5109. __slots__ = ['target', 'channel', 'mode', 'params']
  5110.  
  5111. def __init__(self, source: str, target: str, channel: str, mode: str, params: str) -> None:
  5112. self.source = source
  5113. self.target = target
  5114. self.channel = channel
  5115. self.mode = mode
  5116. self.params = params
  5117.  
  5118. def __repr__(self) -> str:
  5119. return 'ChannelModeIs(source={}, target={}, channel={}, mode={}, params={})'.format(repr(self.source), repr(self.target), repr(self.channel), repr(self.mode), repr(self.params))
  5120.  
  5121. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  5122. source = None
  5123. if self.source is not None:
  5124. source = encode(self.source)
  5125. arguments = []
  5126. arguments.append(encode(self.target))
  5127. arguments.append(encode(self.channel))
  5128. arguments.append(encode(self.mode))
  5129. arguments.append(encode(self.params))
  5130. return Line(source, b"324", arguments)
  5131.  
  5132.  
  5133. class UniqOpIs(Message):
  5134. """
  5135. ``325 <target> <channel> <nickname>``
  5136. """
  5137.  
  5138. __slots__ = ['target', 'channel', 'nickname']
  5139.  
  5140. def __init__(self, source: str, target: str, channel: str, nickname: str) -> None:
  5141. self.source = source
  5142. self.target = target
  5143. self.channel = channel
  5144. self.nickname = nickname
  5145.  
  5146. def __repr__(self) -> str:
  5147. return 'UniqOpIs(source={}, target={}, channel={}, nickname={})'.format(repr(self.source), repr(self.target), repr(self.channel), repr(self.nickname))
  5148.  
  5149. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  5150. source = None
  5151. if self.source is not None:
  5152. source = encode(self.source)
  5153. arguments = []
  5154. arguments.append(encode(self.target))
  5155. arguments.append(encode(self.channel))
  5156. arguments.append(encode(self.nickname))
  5157. return Line(source, b"325", arguments)
  5158.  
  5159.  
  5160. class NoTopicReply(Message):
  5161. """
  5162. ``331 <target> <channel> :No topic is set``
  5163. """
  5164.  
  5165. __slots__ = ['target', 'channel']
  5166.  
  5167. def __init__(self, source: str, target: str, channel: str) -> None:
  5168. self.source = source
  5169. self.target = target
  5170. self.channel = channel
  5171.  
  5172. def __repr__(self) -> str:
  5173. return 'NoTopicReply(source={}, target={}, channel={})'.format(repr(self.source), repr(self.target), repr(self.channel))
  5174.  
  5175. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  5176. source = None
  5177. if self.source is not None:
  5178. source = encode(self.source)
  5179. arguments = []
  5180. arguments.append(encode(self.target))
  5181. arguments.append(encode(self.channel))
  5182. arguments.append(b'No topic is set')
  5183. return Line(source, b"331", arguments)
  5184.  
  5185.  
  5186. class TopicReply(Message):
  5187. """
  5188. ``332 <target> <channel> <topic>``
  5189. """
  5190.  
  5191. __slots__ = ['target', 'channel', 'topic']
  5192.  
  5193. def __init__(self, source: str, target: str, channel: str, topic: str) -> None:
  5194. self.source = source
  5195. self.target = target
  5196. self.channel = channel
  5197. self.topic = topic
  5198.  
  5199. def __repr__(self) -> str:
  5200. return 'TopicReply(source={}, target={}, channel={}, topic={})'.format(repr(self.source), repr(self.target), repr(self.channel), repr(self.topic))
  5201.  
  5202. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  5203. source = None
  5204. if self.source is not None:
  5205. source = encode(self.source)
  5206. arguments = []
  5207. arguments.append(encode(self.target))
  5208. arguments.append(encode(self.channel))
  5209. arguments.append(encode(self.topic))
  5210. return Line(source, b"332", arguments)
  5211.  
  5212.  
  5213. class Inviting(Message):
  5214. """
  5215. ``341 <target> <channel> <nick>``
  5216. """
  5217.  
  5218. __slots__ = ['target', 'channel', 'nick']
  5219.  
  5220. def __init__(self, source: str, target: str, channel: str, nick: str) -> None:
  5221. self.source = source
  5222. self.target = target
  5223. self.channel = channel
  5224. self.nick = nick
  5225.  
  5226. def __repr__(self) -> str:
  5227. return 'Inviting(source={}, target={}, channel={}, nick={})'.format(repr(self.source), repr(self.target), repr(self.channel), repr(self.nick))
  5228.  
  5229. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  5230. source = None
  5231. if self.source is not None:
  5232. source = encode(self.source)
  5233. arguments = []
  5234. arguments.append(encode(self.target))
  5235. arguments.append(encode(self.channel))
  5236. arguments.append(encode(self.nick))
  5237. return Line(source, b"341", arguments)
  5238.  
  5239.  
  5240. class Summoning(Message):
  5241. """
  5242. ``342 <target> <user> :Summoning user to IRC``
  5243. """
  5244.  
  5245. __slots__ = ['target', 'user']
  5246.  
  5247. def __init__(self, source: str, target: str, user: str) -> None:
  5248. self.source = source
  5249. self.target = target
  5250. self.user = user
  5251.  
  5252. def __repr__(self) -> str:
  5253. return 'Summoning(source={}, target={}, user={})'.format(repr(self.source), repr(self.target), repr(self.user))
  5254.  
  5255. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  5256. source = None
  5257. if self.source is not None:
  5258. source = encode(self.source)
  5259. arguments = []
  5260. arguments.append(encode(self.target))
  5261. arguments.append(encode(self.user))
  5262. arguments.append(b'Summoning user to IRC')
  5263. return Line(source, b"342", arguments)
  5264.  
  5265.  
  5266. class InviteList(Message):
  5267. """
  5268. ``346 <target> <channel> <mask>``
  5269. """
  5270.  
  5271. __slots__ = ['target', 'channel', 'mask']
  5272.  
  5273. def __init__(self, source: str, target: str, channel: str, mask: str) -> None:
  5274. self.source = source
  5275. self.target = target
  5276. self.channel = channel
  5277. self.mask = mask
  5278.  
  5279. def __repr__(self) -> str:
  5280. return 'InviteList(source={}, target={}, channel={}, mask={})'.format(repr(self.source), repr(self.target), repr(self.channel), repr(self.mask))
  5281.  
  5282. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  5283. source = None
  5284. if self.source is not None:
  5285. source = encode(self.source)
  5286. arguments = []
  5287. arguments.append(encode(self.target))
  5288. arguments.append(encode(self.channel))
  5289. arguments.append(encode(self.mask))
  5290. return Line(source, b"346", arguments)
  5291.  
  5292.  
  5293. class InviteListEnd(Message):
  5294. """
  5295. ``347 <target> <channel> :End of channel invite list``
  5296. """
  5297.  
  5298. __slots__ = ['target', 'channel']
  5299.  
  5300. def __init__(self, source: str, target: str, channel: str) -> None:
  5301. self.source = source
  5302. self.target = target
  5303. self.channel = channel
  5304.  
  5305. def __repr__(self) -> str:
  5306. return 'InviteListEnd(source={}, target={}, channel={})'.format(repr(self.source), repr(self.target), repr(self.channel))
  5307.  
  5308. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  5309. source = None
  5310. if self.source is not None:
  5311. source = encode(self.source)
  5312. arguments = []
  5313. arguments.append(encode(self.target))
  5314. arguments.append(encode(self.channel))
  5315. arguments.append(b'End of channel invite list')
  5316. return Line(source, b"347", arguments)
  5317.  
  5318.  
  5319. class ExceptList(Message):
  5320. """
  5321. ``348 <target> <channel> <mask>``
  5322. """
  5323.  
  5324. __slots__ = ['target', 'channel', 'mask']
  5325.  
  5326. def __init__(self, source: str, target: str, channel: str, mask: str) -> None:
  5327. self.source = source
  5328. self.target = target
  5329. self.channel = channel
  5330. self.mask = mask
  5331.  
  5332. def __repr__(self) -> str:
  5333. return 'ExceptList(source={}, target={}, channel={}, mask={})'.format(repr(self.source), repr(self.target), repr(self.channel), repr(self.mask))
  5334.  
  5335. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  5336. source = None
  5337. if self.source is not None:
  5338. source = encode(self.source)
  5339. arguments = []
  5340. arguments.append(encode(self.target))
  5341. arguments.append(encode(self.channel))
  5342. arguments.append(encode(self.mask))
  5343. return Line(source, b"348", arguments)
  5344.  
  5345.  
  5346. class ExceptListEnd(Message):
  5347. """
  5348. ``349 <target> <channel> :End of channel exception list``
  5349. """
  5350.  
  5351. __slots__ = ['target', 'channel']
  5352.  
  5353. def __init__(self, source: str, target: str, channel: str) -> None:
  5354. self.source = source
  5355. self.target = target
  5356. self.channel = channel
  5357.  
  5358. def __repr__(self) -> str:
  5359. return 'ExceptListEnd(source={}, target={}, channel={})'.format(repr(self.source), repr(self.target), repr(self.channel))
  5360.  
  5361. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  5362. source = None
  5363. if self.source is not None:
  5364. source = encode(self.source)
  5365. arguments = []
  5366. arguments.append(encode(self.target))
  5367. arguments.append(encode(self.channel))
  5368. arguments.append(b'End of channel exception list')
  5369. return Line(source, b"349", arguments)
  5370.  
  5371.  
  5372. class VersionReply(Message):
  5373. """
  5374. ``351 <target> <version> <server> <comments>``
  5375. """
  5376.  
  5377. __slots__ = ['target', 'version', 'server', 'comments']
  5378.  
  5379. def __init__(self, source: str, target: str, version: str, server: str, comments: str) -> None:
  5380. self.source = source
  5381. self.target = target
  5382. self.version = version
  5383. self.server = server
  5384. self.comments = comments
  5385.  
  5386. def __repr__(self) -> str:
  5387. return 'VersionReply(source={}, target={}, version={}, server={}, comments={})'.format(repr(self.source), repr(self.target), repr(self.version), repr(self.server), repr(self.comments))
  5388.  
  5389. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  5390. source = None
  5391. if self.source is not None:
  5392. source = encode(self.source)
  5393. arguments = []
  5394. arguments.append(encode(self.target))
  5395. arguments.append(encode(self.version))
  5396. arguments.append(encode(self.server))
  5397. arguments.append(encode(self.comments))
  5398. return Line(source, b"351", arguments)
  5399.  
  5400.  
  5401. class WhoReply(Message):
  5402. """
  5403. ``352 <target> <channel> <user> <host> <server> <nickname> <props> <realname>``
  5404. """
  5405.  
  5406. __slots__ = ['target', 'channel', 'user', 'host', 'server', 'nickname', 'props', 'realname']
  5407.  
  5408. def __init__(self, source: str, target: str, channel: str, user: str, host: str, server: str, nickname: str, props: str, realname: str) -> None:
  5409. self.source = source
  5410. self.target = target
  5411. self.channel = channel
  5412. self.user = user
  5413. self.host = host
  5414. self.server = server
  5415. self.nickname = nickname
  5416. self.props = props
  5417. self.realname = realname
  5418.  
  5419. def __repr__(self) -> str:
  5420. return 'WhoReply(source={}, target={}, channel={}, user={}, host={}, server={}, nickname={}, props={}, realname={})'.format(repr(self.source), repr(self.target), repr(self.channel), repr(self.user), repr(self.host), repr(self.server), repr(self.nickname), repr(self.props), repr(self.realname))
  5421.  
  5422. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  5423. source = None
  5424. if self.source is not None:
  5425. source = encode(self.source)
  5426. arguments = []
  5427. arguments.append(encode(self.target))
  5428. arguments.append(encode(self.channel))
  5429. arguments.append(encode(self.user))
  5430. arguments.append(encode(self.host))
  5431. arguments.append(encode(self.server))
  5432. arguments.append(encode(self.nickname))
  5433. arguments.append(encode(self.props))
  5434. arguments.append(encode(self.realname))
  5435. return Line(source, b"352", arguments)
  5436.  
  5437.  
  5438. class NamesReply(Message):
  5439. """
  5440. ``353 <target> <mode> <channel> <nicknames_>``
  5441. """
  5442.  
  5443. __slots__ = ['target', 'mode', 'channel', 'nicknames']
  5444.  
  5445. def __init__(self, source: str, target: str, mode: str, channel: str, nicknames: typing.List[str]) -> None:
  5446. self.source = source
  5447. self.target = target
  5448. self.mode = mode
  5449. self.channel = channel
  5450. self.nicknames = nicknames
  5451.  
  5452. def __repr__(self) -> str:
  5453. return 'NamesReply(source={}, target={}, mode={}, channel={}, nicknames={})'.format(repr(self.source), repr(self.target), repr(self.mode), repr(self.channel), repr(self.nicknames))
  5454.  
  5455. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  5456. source = None
  5457. if self.source is not None:
  5458. source = encode(self.source)
  5459. arguments = []
  5460. arguments.append(encode(self.target))
  5461. arguments.append(encode(self.mode))
  5462. arguments.append(encode(self.channel))
  5463. arguments.append(b" ".join(encode(x) for x in self.nicknames))
  5464. return Line(source, b"353", arguments)
  5465.  
  5466.  
  5467. class LinksReply(Message):
  5468. """
  5469. ``364 <target> <mask> <server> <info>``
  5470. """
  5471.  
  5472. __slots__ = ['target', 'mask', 'server', 'info']
  5473.  
  5474. def __init__(self, source: str, target: str, mask: str, server: str, info: str) -> None:
  5475. self.source = source
  5476. self.target = target
  5477. self.mask = mask
  5478. self.server = server
  5479. self.info = info
  5480.  
  5481. def __repr__(self) -> str:
  5482. return 'LinksReply(source={}, target={}, mask={}, server={}, info={})'.format(repr(self.source), repr(self.target), repr(self.mask), repr(self.server), repr(self.info))
  5483.  
  5484. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  5485. source = None
  5486. if self.source is not None:
  5487. source = encode(self.source)
  5488. arguments = []
  5489. arguments.append(encode(self.target))
  5490. arguments.append(encode(self.mask))
  5491. arguments.append(encode(self.server))
  5492. arguments.append(encode(self.info))
  5493. return Line(source, b"364", arguments)
  5494.  
  5495.  
  5496. class LinksEnd(Message):
  5497. """
  5498. ``365 <target> <mask> :End of LINKS list``
  5499. """
  5500.  
  5501. __slots__ = ['target', 'mask']
  5502.  
  5503. def __init__(self, source: str, target: str, mask: str) -> None:
  5504. self.source = source
  5505. self.target = target
  5506. self.mask = mask
  5507.  
  5508. def __repr__(self) -> str:
  5509. return 'LinksEnd(source={}, target={}, mask={})'.format(repr(self.source), repr(self.target), repr(self.mask))
  5510.  
  5511. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  5512. source = None
  5513. if self.source is not None:
  5514. source = encode(self.source)
  5515. arguments = []
  5516. arguments.append(encode(self.target))
  5517. arguments.append(encode(self.mask))
  5518. arguments.append(b'End of LINKS list')
  5519. return Line(source, b"365", arguments)
  5520.  
  5521.  
  5522. class NamesEnd(Message):
  5523. """
  5524. ``366 <target> <channel> :End of NAMES list``
  5525. """
  5526.  
  5527. __slots__ = ['target', 'channel']
  5528.  
  5529. def __init__(self, source: str, target: str, channel: str) -> None:
  5530. self.source = source
  5531. self.target = target
  5532. self.channel = channel
  5533.  
  5534. def __repr__(self) -> str:
  5535. return 'NamesEnd(source={}, target={}, channel={})'.format(repr(self.source), repr(self.target), repr(self.channel))
  5536.  
  5537. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  5538. source = None
  5539. if self.source is not None:
  5540. source = encode(self.source)
  5541. arguments = []
  5542. arguments.append(encode(self.target))
  5543. arguments.append(encode(self.channel))
  5544. arguments.append(b'End of NAMES list')
  5545. return Line(source, b"366", arguments)
  5546.  
  5547.  
  5548. class BanList(Message):
  5549. """
  5550. ``367 <target> <channel> <mask>``
  5551. """
  5552.  
  5553. __slots__ = ['target', 'channel', 'mask']
  5554.  
  5555. def __init__(self, source: str, target: str, channel: str, mask: str) -> None:
  5556. self.source = source
  5557. self.target = target
  5558. self.channel = channel
  5559. self.mask = mask
  5560.  
  5561. def __repr__(self) -> str:
  5562. return 'BanList(source={}, target={}, channel={}, mask={})'.format(repr(self.source), repr(self.target), repr(self.channel), repr(self.mask))
  5563.  
  5564. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  5565. source = None
  5566. if self.source is not None:
  5567. source = encode(self.source)
  5568. arguments = []
  5569. arguments.append(encode(self.target))
  5570. arguments.append(encode(self.channel))
  5571. arguments.append(encode(self.mask))
  5572. return Line(source, b"367", arguments)
  5573.  
  5574.  
  5575. class BanListEnd(Message):
  5576. """
  5577. ``368 <target> <channel> :End of channel ban list``
  5578. """
  5579.  
  5580. __slots__ = ['target', 'channel']
  5581.  
  5582. def __init__(self, source: str, target: str, channel: str) -> None:
  5583. self.source = source
  5584. self.target = target
  5585. self.channel = channel
  5586.  
  5587. def __repr__(self) -> str:
  5588. return 'BanListEnd(source={}, target={}, channel={})'.format(repr(self.source), repr(self.target), repr(self.channel))
  5589.  
  5590. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  5591. source = None
  5592. if self.source is not None:
  5593. source = encode(self.source)
  5594. arguments = []
  5595. arguments.append(encode(self.target))
  5596. arguments.append(encode(self.channel))
  5597. arguments.append(b'End of channel ban list')
  5598. return Line(source, b"368", arguments)
  5599.  
  5600.  
  5601. class WhoWasEnd(Message):
  5602. """
  5603. ``369 <target> <nickname> :End of WHOWAS``
  5604. """
  5605.  
  5606. __slots__ = ['target', 'nickname']
  5607.  
  5608. def __init__(self, source: str, target: str, nickname: str) -> None:
  5609. self.source = source
  5610. self.target = target
  5611. self.nickname = nickname
  5612.  
  5613. def __repr__(self) -> str:
  5614. return 'WhoWasEnd(source={}, target={}, nickname={})'.format(repr(self.source), repr(self.target), repr(self.nickname))
  5615.  
  5616. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  5617. source = None
  5618. if self.source is not None:
  5619. source = encode(self.source)
  5620. arguments = []
  5621. arguments.append(encode(self.target))
  5622. arguments.append(encode(self.nickname))
  5623. arguments.append(b'End of WHOWAS')
  5624. return Line(source, b"369", arguments)
  5625.  
  5626.  
  5627. class InfoReply(Message):
  5628. """
  5629. ``371 <target> <info>``
  5630. """
  5631.  
  5632. __slots__ = ['target', 'info']
  5633.  
  5634. def __init__(self, source: str, target: str, info: str) -> None:
  5635. self.source = source
  5636. self.target = target
  5637. self.info = info
  5638.  
  5639. def __repr__(self) -> str:
  5640. return 'InfoReply(source={}, target={}, info={})'.format(repr(self.source), repr(self.target), repr(self.info))
  5641.  
  5642. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  5643. source = None
  5644. if self.source is not None:
  5645. source = encode(self.source)
  5646. arguments = []
  5647. arguments.append(encode(self.target))
  5648. arguments.append(encode(self.info))
  5649. return Line(source, b"371", arguments)
  5650.  
  5651.  
  5652. class MotdText(Message):
  5653. """
  5654. ``372 <target> <message>``
  5655. """
  5656.  
  5657. __slots__ = ['target', 'message']
  5658.  
  5659. def __init__(self, source: str, target: str, message: str) -> None:
  5660. self.source = source
  5661. self.target = target
  5662. self.message = message
  5663.  
  5664. def __repr__(self) -> str:
  5665. return 'MotdText(source={}, target={}, message={})'.format(repr(self.source), repr(self.target), repr(self.message))
  5666.  
  5667. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  5668. source = None
  5669. if self.source is not None:
  5670. source = encode(self.source)
  5671. arguments = []
  5672. arguments.append(encode(self.target))
  5673. arguments.append(encode(self.message))
  5674. return Line(source, b"372", arguments)
  5675.  
  5676.  
  5677. class InfoEnd(Message):
  5678. """
  5679. ``374 <target> :End of INFO list``
  5680. """
  5681.  
  5682. __slots__ = ['target']
  5683.  
  5684. def __init__(self, source: str, target: str) -> None:
  5685. self.source = source
  5686. self.target = target
  5687.  
  5688. def __repr__(self) -> str:
  5689. return 'InfoEnd(source={}, target={})'.format(repr(self.source), repr(self.target))
  5690.  
  5691. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  5692. source = None
  5693. if self.source is not None:
  5694. source = encode(self.source)
  5695. arguments = []
  5696. arguments.append(encode(self.target))
  5697. arguments.append(b'End of INFO list')
  5698. return Line(source, b"374", arguments)
  5699.  
  5700.  
  5701. class MotdStart(Message):
  5702. """
  5703. ``375 <target> <message>``
  5704. """
  5705.  
  5706. __slots__ = ['target', 'message']
  5707.  
  5708. def __init__(self, source: str, target: str, message: str) -> None:
  5709. self.source = source
  5710. self.target = target
  5711. self.message = message
  5712.  
  5713. def __repr__(self) -> str:
  5714. return 'MotdStart(source={}, target={}, message={})'.format(repr(self.source), repr(self.target), repr(self.message))
  5715.  
  5716. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  5717. source = None
  5718. if self.source is not None:
  5719. source = encode(self.source)
  5720. arguments = []
  5721. arguments.append(encode(self.target))
  5722. arguments.append(encode(self.message))
  5723. return Line(source, b"375", arguments)
  5724.  
  5725.  
  5726. class MotdEnd(Message):
  5727. """
  5728. ``376 <target> :End of MOTD command``
  5729. """
  5730.  
  5731. __slots__ = ['target']
  5732.  
  5733. def __init__(self, source: str, target: str) -> None:
  5734. self.source = source
  5735. self.target = target
  5736.  
  5737. def __repr__(self) -> str:
  5738. return 'MotdEnd(source={}, target={})'.format(repr(self.source), repr(self.target))
  5739.  
  5740. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  5741. source = None
  5742. if self.source is not None:
  5743. source = encode(self.source)
  5744. arguments = []
  5745. arguments.append(encode(self.target))
  5746. arguments.append(b'End of MOTD command')
  5747. return Line(source, b"376", arguments)
  5748.  
  5749.  
  5750. class YoureOper(Message):
  5751. """
  5752. ``381 <target> :You are now an IRC operator``
  5753. """
  5754.  
  5755. __slots__ = ['target']
  5756.  
  5757. def __init__(self, source: str, target: str) -> None:
  5758. self.source = source
  5759. self.target = target
  5760.  
  5761. def __repr__(self) -> str:
  5762. return 'YoureOper(source={}, target={})'.format(repr(self.source), repr(self.target))
  5763.  
  5764. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  5765. source = None
  5766. if self.source is not None:
  5767. source = encode(self.source)
  5768. arguments = []
  5769. arguments.append(encode(self.target))
  5770. arguments.append(b'You are now an IRC operator')
  5771. return Line(source, b"381", arguments)
  5772.  
  5773.  
  5774. class Rehashing(Message):
  5775. """
  5776. ``382 <target> <file> Rehashing``
  5777. """
  5778.  
  5779. __slots__ = ['target', 'file']
  5780.  
  5781. def __init__(self, source: str, target: str, file: str) -> None:
  5782. self.source = source
  5783. self.target = target
  5784. self.file = file
  5785.  
  5786. def __repr__(self) -> str:
  5787. return 'Rehashing(source={}, target={}, file={})'.format(repr(self.source), repr(self.target), repr(self.file))
  5788.  
  5789. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  5790. source = None
  5791. if self.source is not None:
  5792. source = encode(self.source)
  5793. arguments = []
  5794. arguments.append(encode(self.target))
  5795. arguments.append(encode(self.file))
  5796. arguments.append(b'Rehashing')
  5797. return Line(source, b"382", arguments)
  5798.  
  5799.  
  5800. class YoureService(Message):
  5801. """
  5802. ``383 <target> <message>``
  5803. """
  5804.  
  5805. __slots__ = ['target', 'message']
  5806.  
  5807. def __init__(self, source: str, target: str, message: str) -> None:
  5808. self.source = source
  5809. self.target = target
  5810. self.message = message
  5811.  
  5812. def __repr__(self) -> str:
  5813. return 'YoureService(source={}, target={}, message={})'.format(repr(self.source), repr(self.target), repr(self.message))
  5814.  
  5815. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  5816. source = None
  5817. if self.source is not None:
  5818. source = encode(self.source)
  5819. arguments = []
  5820. arguments.append(encode(self.target))
  5821. arguments.append(encode(self.message))
  5822. return Line(source, b"383", arguments)
  5823.  
  5824.  
  5825. class TimeReply(Message):
  5826. """
  5827. ``391 <target> <server> <time>``
  5828. """
  5829.  
  5830. __slots__ = ['target', 'server', 'time']
  5831.  
  5832. def __init__(self, source: str, target: str, server: str, time: str) -> None:
  5833. self.source = source
  5834. self.target = target
  5835. self.server = server
  5836. self.time = time
  5837.  
  5838. def __repr__(self) -> str:
  5839. return 'TimeReply(source={}, target={}, server={}, time={})'.format(repr(self.source), repr(self.target), repr(self.server), repr(self.time))
  5840.  
  5841. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  5842. source = None
  5843. if self.source is not None:
  5844. source = encode(self.source)
  5845. arguments = []
  5846. arguments.append(encode(self.target))
  5847. arguments.append(encode(self.server))
  5848. arguments.append(encode(self.time))
  5849. return Line(source, b"391", arguments)
  5850.  
  5851.  
  5852. class UsersStart(Message):
  5853. """
  5854. ``392 <target> :UserID Terminal Host``
  5855. """
  5856.  
  5857. __slots__ = ['target']
  5858.  
  5859. def __init__(self, source: str, target: str) -> None:
  5860. self.source = source
  5861. self.target = target
  5862.  
  5863. def __repr__(self) -> str:
  5864. return 'UsersStart(source={}, target={})'.format(repr(self.source), repr(self.target))
  5865.  
  5866. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  5867. source = None
  5868. if self.source is not None:
  5869. source = encode(self.source)
  5870. arguments = []
  5871. arguments.append(encode(self.target))
  5872. arguments.append(b'UserID Terminal Host')
  5873. return Line(source, b"392", arguments)
  5874.  
  5875.  
  5876. class UsersReply(Message):
  5877. """
  5878. ``393 <target> <message>``
  5879. """
  5880.  
  5881. __slots__ = ['target', 'message']
  5882.  
  5883. def __init__(self, source: str, target: str, message: str) -> None:
  5884. self.source = source
  5885. self.target = target
  5886. self.message = message
  5887.  
  5888. def __repr__(self) -> str:
  5889. return 'UsersReply(source={}, target={}, message={})'.format(repr(self.source), repr(self.target), repr(self.message))
  5890.  
  5891. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  5892. source = None
  5893. if self.source is not None:
  5894. source = encode(self.source)
  5895. arguments = []
  5896. arguments.append(encode(self.target))
  5897. arguments.append(encode(self.message))
  5898. return Line(source, b"393", arguments)
  5899.  
  5900.  
  5901. class UsersEnd(Message):
  5902. """
  5903. ``394 <target> :End of users``
  5904. """
  5905.  
  5906. __slots__ = ['target']
  5907.  
  5908. def __init__(self, source: str, target: str) -> None:
  5909. self.source = source
  5910. self.target = target
  5911.  
  5912. def __repr__(self) -> str:
  5913. return 'UsersEnd(source={}, target={})'.format(repr(self.source), repr(self.target))
  5914.  
  5915. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  5916. source = None
  5917. if self.source is not None:
  5918. source = encode(self.source)
  5919. arguments = []
  5920. arguments.append(encode(self.target))
  5921. arguments.append(b'End of users')
  5922. return Line(source, b"394", arguments)
  5923.  
  5924.  
  5925. class NoUsers(Message):
  5926. """
  5927. ``395 <target> :Nobody logged in``
  5928. """
  5929.  
  5930. __slots__ = ['target']
  5931.  
  5932. def __init__(self, source: str, target: str) -> None:
  5933. self.source = source
  5934. self.target = target
  5935.  
  5936. def __repr__(self) -> str:
  5937. return 'NoUsers(source={}, target={})'.format(repr(self.source), repr(self.target))
  5938.  
  5939. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  5940. source = None
  5941. if self.source is not None:
  5942. source = encode(self.source)
  5943. arguments = []
  5944. arguments.append(encode(self.target))
  5945. arguments.append(b'Nobody logged in')
  5946. return Line(source, b"395", arguments)
  5947.  
  5948.  
  5949. class NoSuchNick(Message):
  5950. """
  5951. ``401 <target> <nickname> :No such nick/channel``
  5952. """
  5953.  
  5954. __slots__ = ['target', 'nickname']
  5955.  
  5956. def __init__(self, source: str, target: str, nickname: str) -> None:
  5957. self.source = source
  5958. self.target = target
  5959. self.nickname = nickname
  5960.  
  5961. def __repr__(self) -> str:
  5962. return 'NoSuchNick(source={}, target={}, nickname={})'.format(repr(self.source), repr(self.target), repr(self.nickname))
  5963.  
  5964. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  5965. source = None
  5966. if self.source is not None:
  5967. source = encode(self.source)
  5968. arguments = []
  5969. arguments.append(encode(self.target))
  5970. arguments.append(encode(self.nickname))
  5971. arguments.append(b'No such nick/channel')
  5972. return Line(source, b"401", arguments)
  5973.  
  5974.  
  5975. class NoSuchServer(Message):
  5976. """
  5977. ``402 <target> <server> :No such server``
  5978. """
  5979.  
  5980. __slots__ = ['target', 'server']
  5981.  
  5982. def __init__(self, source: str, target: str, server: str) -> None:
  5983. self.source = source
  5984. self.target = target
  5985. self.server = server
  5986.  
  5987. def __repr__(self) -> str:
  5988. return 'NoSuchServer(source={}, target={}, server={})'.format(repr(self.source), repr(self.target), repr(self.server))
  5989.  
  5990. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  5991. source = None
  5992. if self.source is not None:
  5993. source = encode(self.source)
  5994. arguments = []
  5995. arguments.append(encode(self.target))
  5996. arguments.append(encode(self.server))
  5997. arguments.append(b'No such server')
  5998. return Line(source, b"402", arguments)
  5999.  
  6000.  
  6001. class NoSuchChannel(Message):
  6002. """
  6003. ``403 <target> <channel> :No such channel``
  6004. """
  6005.  
  6006. __slots__ = ['target', 'channel']
  6007.  
  6008. def __init__(self, source: str, target: str, channel: str) -> None:
  6009. self.source = source
  6010. self.target = target
  6011. self.channel = channel
  6012.  
  6013. def __repr__(self) -> str:
  6014. return 'NoSuchChannel(source={}, target={}, channel={})'.format(repr(self.source), repr(self.target), repr(self.channel))
  6015.  
  6016. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  6017. source = None
  6018. if self.source is not None:
  6019. source = encode(self.source)
  6020. arguments = []
  6021. arguments.append(encode(self.target))
  6022. arguments.append(encode(self.channel))
  6023. arguments.append(b'No such channel')
  6024. return Line(source, b"403", arguments)
  6025.  
  6026.  
  6027. class CantSendToChan(Message):
  6028. """
  6029. ``404 <target> <channel> :Cannot send to channel``
  6030. """
  6031.  
  6032. __slots__ = ['target', 'channel']
  6033.  
  6034. def __init__(self, source: str, target: str, channel: str) -> None:
  6035. self.source = source
  6036. self.target = target
  6037. self.channel = channel
  6038.  
  6039. def __repr__(self) -> str:
  6040. return 'CantSendToChan(source={}, target={}, channel={})'.format(repr(self.source), repr(self.target), repr(self.channel))
  6041.  
  6042. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  6043. source = None
  6044. if self.source is not None:
  6045. source = encode(self.source)
  6046. arguments = []
  6047. arguments.append(encode(self.target))
  6048. arguments.append(encode(self.channel))
  6049. arguments.append(b'Cannot send to channel')
  6050. return Line(source, b"404", arguments)
  6051.  
  6052.  
  6053. class TooManyChannels(Message):
  6054. """
  6055. ``405 <target> <channel> :You have joined too many channels``
  6056. """
  6057.  
  6058. __slots__ = ['target', 'channel']
  6059.  
  6060. def __init__(self, source: str, target: str, channel: str) -> None:
  6061. self.source = source
  6062. self.target = target
  6063. self.channel = channel
  6064.  
  6065. def __repr__(self) -> str:
  6066. return 'TooManyChannels(source={}, target={}, channel={})'.format(repr(self.source), repr(self.target), repr(self.channel))
  6067.  
  6068. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  6069. source = None
  6070. if self.source is not None:
  6071. source = encode(self.source)
  6072. arguments = []
  6073. arguments.append(encode(self.target))
  6074. arguments.append(encode(self.channel))
  6075. arguments.append(b'You have joined too many channels')
  6076. return Line(source, b"405", arguments)
  6077.  
  6078.  
  6079. class WasNoSuchNick(Message):
  6080. """
  6081. ``406 <target> <nickname> :There was no such nickname``
  6082. """
  6083.  
  6084. __slots__ = ['target', 'nickname']
  6085.  
  6086. def __init__(self, source: str, target: str, nickname: str) -> None:
  6087. self.source = source
  6088. self.target = target
  6089. self.nickname = nickname
  6090.  
  6091. def __repr__(self) -> str:
  6092. return 'WasNoSuchNick(source={}, target={}, nickname={})'.format(repr(self.source), repr(self.target), repr(self.nickname))
  6093.  
  6094. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  6095. source = None
  6096. if self.source is not None:
  6097. source = encode(self.source)
  6098. arguments = []
  6099. arguments.append(encode(self.target))
  6100. arguments.append(encode(self.nickname))
  6101. arguments.append(b'There was no such nickname')
  6102. return Line(source, b"406", arguments)
  6103.  
  6104.  
  6105. class TooManyTargets(Message):
  6106. """
  6107. ``407 <target> <orig-target> <message>``
  6108. """
  6109.  
  6110. __slots__ = ['target', 'orig_target', 'message']
  6111.  
  6112. def __init__(self, source: str, target: str, orig_target: str, message: str) -> None:
  6113. self.source = source
  6114. self.target = target
  6115. self.orig_target = orig_target
  6116. self.message = message
  6117.  
  6118. def __repr__(self) -> str:
  6119. return 'TooManyTargets(source={}, target={}, orig_target={}, message={})'.format(repr(self.source), repr(self.target), repr(self.orig_target), repr(self.message))
  6120.  
  6121. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  6122. source = None
  6123. if self.source is not None:
  6124. source = encode(self.source)
  6125. arguments = []
  6126. arguments.append(encode(self.target))
  6127. arguments.append(encode(self.orig_target))
  6128. arguments.append(encode(self.message))
  6129. return Line(source, b"407", arguments)
  6130.  
  6131.  
  6132. class NoSuchService(Message):
  6133. """
  6134. ``408 <target> <name> :No such service``
  6135. """
  6136.  
  6137. __slots__ = ['target', 'name']
  6138.  
  6139. def __init__(self, source: str, target: str, name: str) -> None:
  6140. self.source = source
  6141. self.target = target
  6142. self.name = name
  6143.  
  6144. def __repr__(self) -> str:
  6145. return 'NoSuchService(source={}, target={}, name={})'.format(repr(self.source), repr(self.target), repr(self.name))
  6146.  
  6147. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  6148. source = None
  6149. if self.source is not None:
  6150. source = encode(self.source)
  6151. arguments = []
  6152. arguments.append(encode(self.target))
  6153. arguments.append(encode(self.name))
  6154. arguments.append(b'No such service')
  6155. return Line(source, b"408", arguments)
  6156.  
  6157.  
  6158. class NoOrigin(Message):
  6159. """
  6160. ``409 <target> :No origin specified``
  6161. """
  6162.  
  6163. __slots__ = ['target']
  6164.  
  6165. def __init__(self, source: str, target: str) -> None:
  6166. self.source = source
  6167. self.target = target
  6168.  
  6169. def __repr__(self) -> str:
  6170. return 'NoOrigin(source={}, target={})'.format(repr(self.source), repr(self.target))
  6171.  
  6172. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  6173. source = None
  6174. if self.source is not None:
  6175. source = encode(self.source)
  6176. arguments = []
  6177. arguments.append(encode(self.target))
  6178. arguments.append(b'No origin specified')
  6179. return Line(source, b"409", arguments)
  6180.  
  6181.  
  6182. class NoRecipient(Message):
  6183. """
  6184. ``411 <target> :No recipient given``
  6185. """
  6186.  
  6187. __slots__ = ['target']
  6188.  
  6189. def __init__(self, source: str, target: str) -> None:
  6190. self.source = source
  6191. self.target = target
  6192.  
  6193. def __repr__(self) -> str:
  6194. return 'NoRecipient(source={}, target={})'.format(repr(self.source), repr(self.target))
  6195.  
  6196. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  6197. source = None
  6198. if self.source is not None:
  6199. source = encode(self.source)
  6200. arguments = []
  6201. arguments.append(encode(self.target))
  6202. arguments.append(b'No recipient given')
  6203. return Line(source, b"411", arguments)
  6204.  
  6205.  
  6206. class NoTextToSend(Message):
  6207. """
  6208. ``412 <target> :No text to send``
  6209. """
  6210.  
  6211. __slots__ = ['target']
  6212.  
  6213. def __init__(self, source: str, target: str) -> None:
  6214. self.source = source
  6215. self.target = target
  6216.  
  6217. def __repr__(self) -> str:
  6218. return 'NoTextToSend(source={}, target={})'.format(repr(self.source), repr(self.target))
  6219.  
  6220. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  6221. source = None
  6222. if self.source is not None:
  6223. source = encode(self.source)
  6224. arguments = []
  6225. arguments.append(encode(self.target))
  6226. arguments.append(b'No text to send')
  6227. return Line(source, b"412", arguments)
  6228.  
  6229.  
  6230. class NoTopLevel(Message):
  6231. """
  6232. ``413 <target> <mask> :No toplevel domain specified``
  6233. """
  6234.  
  6235. __slots__ = ['target', 'mask']
  6236.  
  6237. def __init__(self, source: str, target: str, mask: str) -> None:
  6238. self.source = source
  6239. self.target = target
  6240. self.mask = mask
  6241.  
  6242. def __repr__(self) -> str:
  6243. return 'NoTopLevel(source={}, target={}, mask={})'.format(repr(self.source), repr(self.target), repr(self.mask))
  6244.  
  6245. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  6246. source = None
  6247. if self.source is not None:
  6248. source = encode(self.source)
  6249. arguments = []
  6250. arguments.append(encode(self.target))
  6251. arguments.append(encode(self.mask))
  6252. arguments.append(b'No toplevel domain specified')
  6253. return Line(source, b"413", arguments)
  6254.  
  6255.  
  6256. class WildTopLevel(Message):
  6257. """
  6258. ``414 <target> <mask> :Wildcard in toplevel domain``
  6259. """
  6260.  
  6261. __slots__ = ['target', 'mask']
  6262.  
  6263. def __init__(self, source: str, target: str, mask: str) -> None:
  6264. self.source = source
  6265. self.target = target
  6266. self.mask = mask
  6267.  
  6268. def __repr__(self) -> str:
  6269. return 'WildTopLevel(source={}, target={}, mask={})'.format(repr(self.source), repr(self.target), repr(self.mask))
  6270.  
  6271. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  6272. source = None
  6273. if self.source is not None:
  6274. source = encode(self.source)
  6275. arguments = []
  6276. arguments.append(encode(self.target))
  6277. arguments.append(encode(self.mask))
  6278. arguments.append(b'Wildcard in toplevel domain')
  6279. return Line(source, b"414", arguments)
  6280.  
  6281.  
  6282. class BadMask(Message):
  6283. """
  6284. ``415 <target> <mask> :Bad Server/host mask``
  6285. """
  6286.  
  6287. __slots__ = ['target', 'mask']
  6288.  
  6289. def __init__(self, source: str, target: str, mask: str) -> None:
  6290. self.source = source
  6291. self.target = target
  6292. self.mask = mask
  6293.  
  6294. def __repr__(self) -> str:
  6295. return 'BadMask(source={}, target={}, mask={})'.format(repr(self.source), repr(self.target), repr(self.mask))
  6296.  
  6297. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  6298. source = None
  6299. if self.source is not None:
  6300. source = encode(self.source)
  6301. arguments = []
  6302. arguments.append(encode(self.target))
  6303. arguments.append(encode(self.mask))
  6304. arguments.append(b'Bad Server/host mask')
  6305. return Line(source, b"415", arguments)
  6306.  
  6307.  
  6308. class UnknownCommand(Message):
  6309. """
  6310. ``421 <target> <command> :Unknown command``
  6311. """
  6312.  
  6313. __slots__ = ['target', 'command']
  6314.  
  6315. def __init__(self, source: str, target: str, command: str) -> None:
  6316. self.source = source
  6317. self.target = target
  6318. self.command = command
  6319.  
  6320. def __repr__(self) -> str:
  6321. return 'UnknownCommand(source={}, target={}, command={})'.format(repr(self.source), repr(self.target), repr(self.command))
  6322.  
  6323. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  6324. source = None
  6325. if self.source is not None:
  6326. source = encode(self.source)
  6327. arguments = []
  6328. arguments.append(encode(self.target))
  6329. arguments.append(encode(self.command))
  6330. arguments.append(b'Unknown command')
  6331. return Line(source, b"421", arguments)
  6332.  
  6333.  
  6334. class NoMotd(Message):
  6335. """
  6336. ``422 <target> :MOTD File is missing``
  6337. """
  6338.  
  6339. __slots__ = ['target']
  6340.  
  6341. def __init__(self, source: str, target: str) -> None:
  6342. self.source = source
  6343. self.target = target
  6344.  
  6345. def __repr__(self) -> str:
  6346. return 'NoMotd(source={}, target={})'.format(repr(self.source), repr(self.target))
  6347.  
  6348. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  6349. source = None
  6350. if self.source is not None:
  6351. source = encode(self.source)
  6352. arguments = []
  6353. arguments.append(encode(self.target))
  6354. arguments.append(b'MOTD File is missing')
  6355. return Line(source, b"422", arguments)
  6356.  
  6357.  
  6358. class NoAdminInfo(Message):
  6359. """
  6360. ``423 <target> <server> :No administrative info available``
  6361. """
  6362.  
  6363. __slots__ = ['target', 'server']
  6364.  
  6365. def __init__(self, source: str, target: str, server: str) -> None:
  6366. self.source = source
  6367. self.target = target
  6368. self.server = server
  6369.  
  6370. def __repr__(self) -> str:
  6371. return 'NoAdminInfo(source={}, target={}, server={})'.format(repr(self.source), repr(self.target), repr(self.server))
  6372.  
  6373. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  6374. source = None
  6375. if self.source is not None:
  6376. source = encode(self.source)
  6377. arguments = []
  6378. arguments.append(encode(self.target))
  6379. arguments.append(encode(self.server))
  6380. arguments.append(b'No administrative info available')
  6381. return Line(source, b"423", arguments)
  6382.  
  6383.  
  6384. class FileError(Message):
  6385. """
  6386. ``424 <target> <message>``
  6387. """
  6388.  
  6389. __slots__ = ['target', 'message']
  6390.  
  6391. def __init__(self, source: str, target: str, message: str) -> None:
  6392. self.source = source
  6393. self.target = target
  6394. self.message = message
  6395.  
  6396. def __repr__(self) -> str:
  6397. return 'FileError(source={}, target={}, message={})'.format(repr(self.source), repr(self.target), repr(self.message))
  6398.  
  6399. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  6400. source = None
  6401. if self.source is not None:
  6402. source = encode(self.source)
  6403. arguments = []
  6404. arguments.append(encode(self.target))
  6405. arguments.append(encode(self.message))
  6406. return Line(source, b"424", arguments)
  6407.  
  6408.  
  6409. class NoNicknameGiven(Message):
  6410. """
  6411. ``431 <target> :No nickname given``
  6412. """
  6413.  
  6414. __slots__ = ['target']
  6415.  
  6416. def __init__(self, source: str, target: str) -> None:
  6417. self.source = source
  6418. self.target = target
  6419.  
  6420. def __repr__(self) -> str:
  6421. return 'NoNicknameGiven(source={}, target={})'.format(repr(self.source), repr(self.target))
  6422.  
  6423. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  6424. source = None
  6425. if self.source is not None:
  6426. source = encode(self.source)
  6427. arguments = []
  6428. arguments.append(encode(self.target))
  6429. arguments.append(b'No nickname given')
  6430. return Line(source, b"431", arguments)
  6431.  
  6432.  
  6433. class ErroneusNickname(Message):
  6434. """
  6435. ``432 <target> <nickname> :Erroneous nickname``
  6436. """
  6437.  
  6438. __slots__ = ['target', 'nickname']
  6439.  
  6440. def __init__(self, source: str, target: str, nickname: str) -> None:
  6441. self.source = source
  6442. self.target = target
  6443. self.nickname = nickname
  6444.  
  6445. def __repr__(self) -> str:
  6446. return 'ErroneusNickname(source={}, target={}, nickname={})'.format(repr(self.source), repr(self.target), repr(self.nickname))
  6447.  
  6448. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  6449. source = None
  6450. if self.source is not None:
  6451. source = encode(self.source)
  6452. arguments = []
  6453. arguments.append(encode(self.target))
  6454. arguments.append(encode(self.nickname))
  6455. arguments.append(b'Erroneous nickname')
  6456. return Line(source, b"432", arguments)
  6457.  
  6458.  
  6459. class NicknameInUse(Message):
  6460. """
  6461. ``433 <target> <nickname> :Nickname is already in use``
  6462. """
  6463.  
  6464. __slots__ = ['target', 'nickname']
  6465.  
  6466. def __init__(self, source: str, target: str, nickname: str) -> None:
  6467. self.source = source
  6468. self.target = target
  6469. self.nickname = nickname
  6470.  
  6471. def __repr__(self) -> str:
  6472. return 'NicknameInUse(source={}, target={}, nickname={})'.format(repr(self.source), repr(self.target), repr(self.nickname))
  6473.  
  6474. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  6475. source = None
  6476. if self.source is not None:
  6477. source = encode(self.source)
  6478. arguments = []
  6479. arguments.append(encode(self.target))
  6480. arguments.append(encode(self.nickname))
  6481. arguments.append(b'Nickname is already in use')
  6482. return Line(source, b"433", arguments)
  6483.  
  6484.  
  6485. class NickCollision(Message):
  6486. """
  6487. ``436 <target> <nickname> <message>``
  6488. """
  6489.  
  6490. __slots__ = ['target', 'nickname', 'message']
  6491.  
  6492. def __init__(self, source: str, target: str, nickname: str, message: str) -> None:
  6493. self.source = source
  6494. self.target = target
  6495. self.nickname = nickname
  6496. self.message = message
  6497.  
  6498. def __repr__(self) -> str:
  6499. return 'NickCollision(source={}, target={}, nickname={}, message={})'.format(repr(self.source), repr(self.target), repr(self.nickname), repr(self.message))
  6500.  
  6501. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  6502. source = None
  6503. if self.source is not None:
  6504. source = encode(self.source)
  6505. arguments = []
  6506. arguments.append(encode(self.target))
  6507. arguments.append(encode(self.nickname))
  6508. arguments.append(encode(self.message))
  6509. return Line(source, b"436", arguments)
  6510.  
  6511.  
  6512. class UnavailResource(Message):
  6513. """
  6514. ``437 <target> <name> :Nick/channel is temporarily unavailable``
  6515. """
  6516.  
  6517. __slots__ = ['target', 'name']
  6518.  
  6519. def __init__(self, source: str, target: str, name: str) -> None:
  6520. self.source = source
  6521. self.target = target
  6522. self.name = name
  6523.  
  6524. def __repr__(self) -> str:
  6525. return 'UnavailResource(source={}, target={}, name={})'.format(repr(self.source), repr(self.target), repr(self.name))
  6526.  
  6527. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  6528. source = None
  6529. if self.source is not None:
  6530. source = encode(self.source)
  6531. arguments = []
  6532. arguments.append(encode(self.target))
  6533. arguments.append(encode(self.name))
  6534. arguments.append(b'Nick/channel is temporarily unavailable')
  6535. return Line(source, b"437", arguments)
  6536.  
  6537.  
  6538. class UserNotInChannel(Message):
  6539. """
  6540. ``441 <target> <nickname> <channel> :They aren't on that channel``
  6541. """
  6542.  
  6543. __slots__ = ['target', 'nickname', 'channel']
  6544.  
  6545. def __init__(self, source: str, target: str, nickname: str, channel: str) -> None:
  6546. self.source = source
  6547. self.target = target
  6548. self.nickname = nickname
  6549. self.channel = channel
  6550.  
  6551. def __repr__(self) -> str:
  6552. return 'UserNotInChannel(source={}, target={}, nickname={}, channel={})'.format(repr(self.source), repr(self.target), repr(self.nickname), repr(self.channel))
  6553.  
  6554. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  6555. source = None
  6556. if self.source is not None:
  6557. source = encode(self.source)
  6558. arguments = []
  6559. arguments.append(encode(self.target))
  6560. arguments.append(encode(self.nickname))
  6561. arguments.append(encode(self.channel))
  6562. arguments.append(b"They aren't on that channel")
  6563. return Line(source, b"441", arguments)
  6564.  
  6565.  
  6566. class NotOnChannel(Message):
  6567. """
  6568. ``442 <target> <channel> :You're not on that channel``
  6569. """
  6570.  
  6571. __slots__ = ['target', 'channel']
  6572.  
  6573. def __init__(self, source: str, target: str, channel: str) -> None:
  6574. self.source = source
  6575. self.target = target
  6576. self.channel = channel
  6577.  
  6578. def __repr__(self) -> str:
  6579. return 'NotOnChannel(source={}, target={}, channel={})'.format(repr(self.source), repr(self.target), repr(self.channel))
  6580.  
  6581. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  6582. source = None
  6583. if self.source is not None:
  6584. source = encode(self.source)
  6585. arguments = []
  6586. arguments.append(encode(self.target))
  6587. arguments.append(encode(self.channel))
  6588. arguments.append(b"You're not on that channel")
  6589. return Line(source, b"442", arguments)
  6590.  
  6591.  
  6592. class UserOnChannel(Message):
  6593. """
  6594. ``443 <target> <user> <channel> :is already on channel``
  6595. """
  6596.  
  6597. __slots__ = ['target', 'user', 'channel']
  6598.  
  6599. def __init__(self, source: str, target: str, user: str, channel: str) -> None:
  6600. self.source = source
  6601. self.target = target
  6602. self.user = user
  6603. self.channel = channel
  6604.  
  6605. def __repr__(self) -> str:
  6606. return 'UserOnChannel(source={}, target={}, user={}, channel={})'.format(repr(self.source), repr(self.target), repr(self.user), repr(self.channel))
  6607.  
  6608. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  6609. source = None
  6610. if self.source is not None:
  6611. source = encode(self.source)
  6612. arguments = []
  6613. arguments.append(encode(self.target))
  6614. arguments.append(encode(self.user))
  6615. arguments.append(encode(self.channel))
  6616. arguments.append(b'is already on channel')
  6617. return Line(source, b"443", arguments)
  6618.  
  6619.  
  6620. class NoLogin(Message):
  6621. """
  6622. ``444 <target> <user> :User not logged in``
  6623. """
  6624.  
  6625. __slots__ = ['target', 'user']
  6626.  
  6627. def __init__(self, source: str, target: str, user: str) -> None:
  6628. self.source = source
  6629. self.target = target
  6630. self.user = user
  6631.  
  6632. def __repr__(self) -> str:
  6633. return 'NoLogin(source={}, target={}, user={})'.format(repr(self.source), repr(self.target), repr(self.user))
  6634.  
  6635. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  6636. source = None
  6637. if self.source is not None:
  6638. source = encode(self.source)
  6639. arguments = []
  6640. arguments.append(encode(self.target))
  6641. arguments.append(encode(self.user))
  6642. arguments.append(b'User not logged in')
  6643. return Line(source, b"444", arguments)
  6644.  
  6645.  
  6646. class SummonDisabled(Message):
  6647. """
  6648. ``445 <target> :SUMMON has been disabled``
  6649. """
  6650.  
  6651. __slots__ = ['target']
  6652.  
  6653. def __init__(self, source: str, target: str) -> None:
  6654. self.source = source
  6655. self.target = target
  6656.  
  6657. def __repr__(self) -> str:
  6658. return 'SummonDisabled(source={}, target={})'.format(repr(self.source), repr(self.target))
  6659.  
  6660. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  6661. source = None
  6662. if self.source is not None:
  6663. source = encode(self.source)
  6664. arguments = []
  6665. arguments.append(encode(self.target))
  6666. arguments.append(b'SUMMON has been disabled')
  6667. return Line(source, b"445", arguments)
  6668.  
  6669.  
  6670. class UsersDisabled(Message):
  6671. """
  6672. ``446 <target> :USERS has been disabled``
  6673. """
  6674.  
  6675. __slots__ = ['target']
  6676.  
  6677. def __init__(self, source: str, target: str) -> None:
  6678. self.source = source
  6679. self.target = target
  6680.  
  6681. def __repr__(self) -> str:
  6682. return 'UsersDisabled(source={}, target={})'.format(repr(self.source), repr(self.target))
  6683.  
  6684. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  6685. source = None
  6686. if self.source is not None:
  6687. source = encode(self.source)
  6688. arguments = []
  6689. arguments.append(encode(self.target))
  6690. arguments.append(b'USERS has been disabled')
  6691. return Line(source, b"446", arguments)
  6692.  
  6693.  
  6694. class NotRegistered(Message):
  6695. """
  6696. ``451 <target> :You have not registered``
  6697. """
  6698.  
  6699. __slots__ = ['target']
  6700.  
  6701. def __init__(self, source: str, target: str) -> None:
  6702. self.source = source
  6703. self.target = target
  6704.  
  6705. def __repr__(self) -> str:
  6706. return 'NotRegistered(source={}, target={})'.format(repr(self.source), repr(self.target))
  6707.  
  6708. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  6709. source = None
  6710. if self.source is not None:
  6711. source = encode(self.source)
  6712. arguments = []
  6713. arguments.append(encode(self.target))
  6714. arguments.append(b'You have not registered')
  6715. return Line(source, b"451", arguments)
  6716.  
  6717.  
  6718. class NeedMoreParams(Message):
  6719. """
  6720. ``461 <target> <command> :Not enough parameters``
  6721. """
  6722.  
  6723. __slots__ = ['target', 'command']
  6724.  
  6725. def __init__(self, source: str, target: str, command: str) -> None:
  6726. self.source = source
  6727. self.target = target
  6728. self.command = command
  6729.  
  6730. def __repr__(self) -> str:
  6731. return 'NeedMoreParams(source={}, target={}, command={})'.format(repr(self.source), repr(self.target), repr(self.command))
  6732.  
  6733. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  6734. source = None
  6735. if self.source is not None:
  6736. source = encode(self.source)
  6737. arguments = []
  6738. arguments.append(encode(self.target))
  6739. arguments.append(encode(self.command))
  6740. arguments.append(b'Not enough parameters')
  6741. return Line(source, b"461", arguments)
  6742.  
  6743.  
  6744. class AlreadyRegistered(Message):
  6745. """
  6746. ``462 <target> :Unauthorized command (already registered)``
  6747. """
  6748.  
  6749. __slots__ = ['target']
  6750.  
  6751. def __init__(self, source: str, target: str) -> None:
  6752. self.source = source
  6753. self.target = target
  6754.  
  6755. def __repr__(self) -> str:
  6756. return 'AlreadyRegistered(source={}, target={})'.format(repr(self.source), repr(self.target))
  6757.  
  6758. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  6759. source = None
  6760. if self.source is not None:
  6761. source = encode(self.source)
  6762. arguments = []
  6763. arguments.append(encode(self.target))
  6764. arguments.append(b'Unauthorized command (already registered)')
  6765. return Line(source, b"462", arguments)
  6766.  
  6767.  
  6768. class NoPermForHost(Message):
  6769. """
  6770. ``463 <target> :Your host isn't among the privileged``
  6771. """
  6772.  
  6773. __slots__ = ['target']
  6774.  
  6775. def __init__(self, source: str, target: str) -> None:
  6776. self.source = source
  6777. self.target = target
  6778.  
  6779. def __repr__(self) -> str:
  6780. return 'NoPermForHost(source={}, target={})'.format(repr(self.source), repr(self.target))
  6781.  
  6782. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  6783. source = None
  6784. if self.source is not None:
  6785. source = encode(self.source)
  6786. arguments = []
  6787. arguments.append(encode(self.target))
  6788. arguments.append(b"Your host isn't among the privileged")
  6789. return Line(source, b"463", arguments)
  6790.  
  6791.  
  6792. class PasswordMismatch(Message):
  6793. """
  6794. ``464 <target> :Password incorrect``
  6795. """
  6796.  
  6797. __slots__ = ['target']
  6798.  
  6799. def __init__(self, source: str, target: str) -> None:
  6800. self.source = source
  6801. self.target = target
  6802.  
  6803. def __repr__(self) -> str:
  6804. return 'PasswordMismatch(source={}, target={})'.format(repr(self.source), repr(self.target))
  6805.  
  6806. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  6807. source = None
  6808. if self.source is not None:
  6809. source = encode(self.source)
  6810. arguments = []
  6811. arguments.append(encode(self.target))
  6812. arguments.append(b'Password incorrect')
  6813. return Line(source, b"464", arguments)
  6814.  
  6815.  
  6816. class YoureBannedCreep(Message):
  6817. """
  6818. ``465 <target> :You are banned from this server``
  6819. """
  6820.  
  6821. __slots__ = ['target']
  6822.  
  6823. def __init__(self, source: str, target: str) -> None:
  6824. self.source = source
  6825. self.target = target
  6826.  
  6827. def __repr__(self) -> str:
  6828. return 'YoureBannedCreep(source={}, target={})'.format(repr(self.source), repr(self.target))
  6829.  
  6830. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  6831. source = None
  6832. if self.source is not None:
  6833. source = encode(self.source)
  6834. arguments = []
  6835. arguments.append(encode(self.target))
  6836. arguments.append(b'You are banned from this server')
  6837. return Line(source, b"465", arguments)
  6838.  
  6839.  
  6840. class YouWillBeBanned(Message):
  6841. """
  6842. ``466 <target>``
  6843. """
  6844.  
  6845. __slots__ = ['target']
  6846.  
  6847. def __init__(self, source: str, target: str) -> None:
  6848. self.source = source
  6849. self.target = target
  6850.  
  6851. def __repr__(self) -> str:
  6852. return 'YouWillBeBanned(source={}, target={})'.format(repr(self.source), repr(self.target))
  6853.  
  6854. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  6855. source = None
  6856. if self.source is not None:
  6857. source = encode(self.source)
  6858. arguments = []
  6859. arguments.append(encode(self.target))
  6860. return Line(source, b"466", arguments)
  6861.  
  6862.  
  6863. class KeySet(Message):
  6864. """
  6865. ``467 <target> <channel> :Channel key already set``
  6866. """
  6867.  
  6868. __slots__ = ['target', 'channel']
  6869.  
  6870. def __init__(self, source: str, target: str, channel: str) -> None:
  6871. self.source = source
  6872. self.target = target
  6873. self.channel = channel
  6874.  
  6875. def __repr__(self) -> str:
  6876. return 'KeySet(source={}, target={}, channel={})'.format(repr(self.source), repr(self.target), repr(self.channel))
  6877.  
  6878. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  6879. source = None
  6880. if self.source is not None:
  6881. source = encode(self.source)
  6882. arguments = []
  6883. arguments.append(encode(self.target))
  6884. arguments.append(encode(self.channel))
  6885. arguments.append(b'Channel key already set')
  6886. return Line(source, b"467", arguments)
  6887.  
  6888.  
  6889. class ChannelIsFull(Message):
  6890. """
  6891. ``471 <target> <channel> :Cannot join channel (+l)``
  6892. """
  6893.  
  6894. __slots__ = ['target', 'channel']
  6895.  
  6896. def __init__(self, source: str, target: str, channel: str) -> None:
  6897. self.source = source
  6898. self.target = target
  6899. self.channel = channel
  6900.  
  6901. def __repr__(self) -> str:
  6902. return 'ChannelIsFull(source={}, target={}, channel={})'.format(repr(self.source), repr(self.target), repr(self.channel))
  6903.  
  6904. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  6905. source = None
  6906. if self.source is not None:
  6907. source = encode(self.source)
  6908. arguments = []
  6909. arguments.append(encode(self.target))
  6910. arguments.append(encode(self.channel))
  6911. arguments.append(b'Cannot join channel (+l)')
  6912. return Line(source, b"471", arguments)
  6913.  
  6914.  
  6915. class UnknownMode(Message):
  6916. """
  6917. ``472 <target> <char> :is unknown mode char to me``
  6918. """
  6919.  
  6920. __slots__ = ['target', 'char']
  6921.  
  6922. def __init__(self, source: str, target: str, char: str) -> None:
  6923. self.source = source
  6924. self.target = target
  6925. self.char = char
  6926.  
  6927. def __repr__(self) -> str:
  6928. return 'UnknownMode(source={}, target={}, char={})'.format(repr(self.source), repr(self.target), repr(self.char))
  6929.  
  6930. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  6931. source = None
  6932. if self.source is not None:
  6933. source = encode(self.source)
  6934. arguments = []
  6935. arguments.append(encode(self.target))
  6936. arguments.append(encode(self.char))
  6937. arguments.append(b'is unknown mode char to me')
  6938. return Line(source, b"472", arguments)
  6939.  
  6940.  
  6941. class InviteOnlyChan(Message):
  6942. """
  6943. ``473 <target> <channel> :Cannot join channel (+i)``
  6944. """
  6945.  
  6946. __slots__ = ['target', 'channel']
  6947.  
  6948. def __init__(self, source: str, target: str, channel: str) -> None:
  6949. self.source = source
  6950. self.target = target
  6951. self.channel = channel
  6952.  
  6953. def __repr__(self) -> str:
  6954. return 'InviteOnlyChan(source={}, target={}, channel={})'.format(repr(self.source), repr(self.target), repr(self.channel))
  6955.  
  6956. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  6957. source = None
  6958. if self.source is not None:
  6959. source = encode(self.source)
  6960. arguments = []
  6961. arguments.append(encode(self.target))
  6962. arguments.append(encode(self.channel))
  6963. arguments.append(b'Cannot join channel (+i)')
  6964. return Line(source, b"473", arguments)
  6965.  
  6966.  
  6967. class BannedFromChan(Message):
  6968. """
  6969. ``474 <target> <channel> :Cannot join channel (+b)``
  6970. """
  6971.  
  6972. __slots__ = ['target', 'channel']
  6973.  
  6974. def __init__(self, source: str, target: str, channel: str) -> None:
  6975. self.source = source
  6976. self.target = target
  6977. self.channel = channel
  6978.  
  6979. def __repr__(self) -> str:
  6980. return 'BannedFromChan(source={}, target={}, channel={})'.format(repr(self.source), repr(self.target), repr(self.channel))
  6981.  
  6982. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  6983. source = None
  6984. if self.source is not None:
  6985. source = encode(self.source)
  6986. arguments = []
  6987. arguments.append(encode(self.target))
  6988. arguments.append(encode(self.channel))
  6989. arguments.append(b'Cannot join channel (+b)')
  6990. return Line(source, b"474", arguments)
  6991.  
  6992.  
  6993. class BadChannelKey(Message):
  6994. """
  6995. ``475 <target> <channel> :Cannot join channel (+k)``
  6996. """
  6997.  
  6998. __slots__ = ['target', 'channel']
  6999.  
  7000. def __init__(self, source: str, target: str, channel: str) -> None:
  7001. self.source = source
  7002. self.target = target
  7003. self.channel = channel
  7004.  
  7005. def __repr__(self) -> str:
  7006. return 'BadChannelKey(source={}, target={}, channel={})'.format(repr(self.source), repr(self.target), repr(self.channel))
  7007.  
  7008. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  7009. source = None
  7010. if self.source is not None:
  7011. source = encode(self.source)
  7012. arguments = []
  7013. arguments.append(encode(self.target))
  7014. arguments.append(encode(self.channel))
  7015. arguments.append(b'Cannot join channel (+k)')
  7016. return Line(source, b"475", arguments)
  7017.  
  7018.  
  7019. class BadChanMask(Message):
  7020. """
  7021. ``476 <target> <channel> :Bad Channel Mask``
  7022. """
  7023.  
  7024. __slots__ = ['target', 'channel']
  7025.  
  7026. def __init__(self, source: str, target: str, channel: str) -> None:
  7027. self.source = source
  7028. self.target = target
  7029. self.channel = channel
  7030.  
  7031. def __repr__(self) -> str:
  7032. return 'BadChanMask(source={}, target={}, channel={})'.format(repr(self.source), repr(self.target), repr(self.channel))
  7033.  
  7034. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  7035. source = None
  7036. if self.source is not None:
  7037. source = encode(self.source)
  7038. arguments = []
  7039. arguments.append(encode(self.target))
  7040. arguments.append(encode(self.channel))
  7041. arguments.append(b'Bad Channel Mask')
  7042. return Line(source, b"476", arguments)
  7043.  
  7044.  
  7045. class NoChanModes(Message):
  7046. """
  7047. ``477 <target> <channel> :Channel doesn't support modes``
  7048. """
  7049.  
  7050. __slots__ = ['target', 'channel']
  7051.  
  7052. def __init__(self, source: str, target: str, channel: str) -> None:
  7053. self.source = source
  7054. self.target = target
  7055. self.channel = channel
  7056.  
  7057. def __repr__(self) -> str:
  7058. return 'NoChanModes(source={}, target={}, channel={})'.format(repr(self.source), repr(self.target), repr(self.channel))
  7059.  
  7060. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  7061. source = None
  7062. if self.source is not None:
  7063. source = encode(self.source)
  7064. arguments = []
  7065. arguments.append(encode(self.target))
  7066. arguments.append(encode(self.channel))
  7067. arguments.append(b"Channel doesn't support modes")
  7068. return Line(source, b"477", arguments)
  7069.  
  7070.  
  7071. class BanListFull(Message):
  7072. """
  7073. ``478 <target> <channel> <char> :Channel list is full``
  7074. """
  7075.  
  7076. __slots__ = ['target', 'channel', 'char']
  7077.  
  7078. def __init__(self, source: str, target: str, channel: str, char: str) -> None:
  7079. self.source = source
  7080. self.target = target
  7081. self.channel = channel
  7082. self.char = char
  7083.  
  7084. def __repr__(self) -> str:
  7085. return 'BanListFull(source={}, target={}, channel={}, char={})'.format(repr(self.source), repr(self.target), repr(self.channel), repr(self.char))
  7086.  
  7087. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  7088. source = None
  7089. if self.source is not None:
  7090. source = encode(self.source)
  7091. arguments = []
  7092. arguments.append(encode(self.target))
  7093. arguments.append(encode(self.channel))
  7094. arguments.append(encode(self.char))
  7095. arguments.append(b'Channel list is full')
  7096. return Line(source, b"478", arguments)
  7097.  
  7098.  
  7099. class NoPrivileges(Message):
  7100. """
  7101. ``481 <target> :Permission Denied- You're not an IRC operator``
  7102. """
  7103.  
  7104. __slots__ = ['target']
  7105.  
  7106. def __init__(self, source: str, target: str) -> None:
  7107. self.source = source
  7108. self.target = target
  7109.  
  7110. def __repr__(self) -> str:
  7111. return 'NoPrivileges(source={}, target={})'.format(repr(self.source), repr(self.target))
  7112.  
  7113. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  7114. source = None
  7115. if self.source is not None:
  7116. source = encode(self.source)
  7117. arguments = []
  7118. arguments.append(encode(self.target))
  7119. arguments.append(b"Permission Denied- You're not an IRC operator")
  7120. return Line(source, b"481", arguments)
  7121.  
  7122.  
  7123. class ChanOpPrivsNeeded(Message):
  7124. """
  7125. ``482 <target> <channel> :You're not channel operator``
  7126. """
  7127.  
  7128. __slots__ = ['target', 'channel']
  7129.  
  7130. def __init__(self, source: str, target: str, channel: str) -> None:
  7131. self.source = source
  7132. self.target = target
  7133. self.channel = channel
  7134.  
  7135. def __repr__(self) -> str:
  7136. return 'ChanOpPrivsNeeded(source={}, target={}, channel={})'.format(repr(self.source), repr(self.target), repr(self.channel))
  7137.  
  7138. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  7139. source = None
  7140. if self.source is not None:
  7141. source = encode(self.source)
  7142. arguments = []
  7143. arguments.append(encode(self.target))
  7144. arguments.append(encode(self.channel))
  7145. arguments.append(b"You're not channel operator")
  7146. return Line(source, b"482", arguments)
  7147.  
  7148.  
  7149. class CantKillServer(Message):
  7150. """
  7151. ``483 <target> :You can't kill a server!``
  7152. """
  7153.  
  7154. __slots__ = ['target']
  7155.  
  7156. def __init__(self, source: str, target: str) -> None:
  7157. self.source = source
  7158. self.target = target
  7159.  
  7160. def __repr__(self) -> str:
  7161. return 'CantKillServer(source={}, target={})'.format(repr(self.source), repr(self.target))
  7162.  
  7163. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  7164. source = None
  7165. if self.source is not None:
  7166. source = encode(self.source)
  7167. arguments = []
  7168. arguments.append(encode(self.target))
  7169. arguments.append(b"You can't kill a server!")
  7170. return Line(source, b"483", arguments)
  7171.  
  7172.  
  7173. class Restricted(Message):
  7174. """
  7175. ``484 <target> :Your connection is restricted!``
  7176. """
  7177.  
  7178. __slots__ = ['target']
  7179.  
  7180. def __init__(self, source: str, target: str) -> None:
  7181. self.source = source
  7182. self.target = target
  7183.  
  7184. def __repr__(self) -> str:
  7185. return 'Restricted(source={}, target={})'.format(repr(self.source), repr(self.target))
  7186.  
  7187. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  7188. source = None
  7189. if self.source is not None:
  7190. source = encode(self.source)
  7191. arguments = []
  7192. arguments.append(encode(self.target))
  7193. arguments.append(b'Your connection is restricted!')
  7194. return Line(source, b"484", arguments)
  7195.  
  7196.  
  7197. class UniqOpPrivsNeeded(Message):
  7198. """
  7199. ``485 <target> :You're not the original channel operator``
  7200. """
  7201.  
  7202. __slots__ = ['target']
  7203.  
  7204. def __init__(self, source: str, target: str) -> None:
  7205. self.source = source
  7206. self.target = target
  7207.  
  7208. def __repr__(self) -> str:
  7209. return 'UniqOpPrivsNeeded(source={}, target={})'.format(repr(self.source), repr(self.target))
  7210.  
  7211. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  7212. source = None
  7213. if self.source is not None:
  7214. source = encode(self.source)
  7215. arguments = []
  7216. arguments.append(encode(self.target))
  7217. arguments.append(b"You're not the original channel operator")
  7218. return Line(source, b"485", arguments)
  7219.  
  7220.  
  7221. class NoOperHost(Message):
  7222. """
  7223. ``491 <target> :No O-lines for your host``
  7224. """
  7225.  
  7226. __slots__ = ['target']
  7227.  
  7228. def __init__(self, source: str, target: str) -> None:
  7229. self.source = source
  7230. self.target = target
  7231.  
  7232. def __repr__(self) -> str:
  7233. return 'NoOperHost(source={}, target={})'.format(repr(self.source), repr(self.target))
  7234.  
  7235. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  7236. source = None
  7237. if self.source is not None:
  7238. source = encode(self.source)
  7239. arguments = []
  7240. arguments.append(encode(self.target))
  7241. arguments.append(b'No O-lines for your host')
  7242. return Line(source, b"491", arguments)
  7243.  
  7244.  
  7245. class UserModeUnknownFlag(Message):
  7246. """
  7247. ``501 <target> :Unknown MODE flag``
  7248. """
  7249.  
  7250. __slots__ = ['target']
  7251.  
  7252. def __init__(self, source: str, target: str) -> None:
  7253. self.source = source
  7254. self.target = target
  7255.  
  7256. def __repr__(self) -> str:
  7257. return 'UserModeUnknownFlag(source={}, target={})'.format(repr(self.source), repr(self.target))
  7258.  
  7259. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  7260. source = None
  7261. if self.source is not None:
  7262. source = encode(self.source)
  7263. arguments = []
  7264. arguments.append(encode(self.target))
  7265. arguments.append(b'Unknown MODE flag')
  7266. return Line(source, b"501", arguments)
  7267.  
  7268.  
  7269. class UsersDontMatch(Message):
  7270. """
  7271. ``502 <target> :Cannot change mode for other users``
  7272. """
  7273.  
  7274. __slots__ = ['target']
  7275.  
  7276. def __init__(self, source: str, target: str) -> None:
  7277. self.source = source
  7278. self.target = target
  7279.  
  7280. def __repr__(self) -> str:
  7281. return 'UsersDontMatch(source={}, target={})'.format(repr(self.source), repr(self.target))
  7282.  
  7283. def to_line(self, encode: typing.Callable[[str], bytes] = lambda s: s.encode("utf-8")) -> Line:
  7284. source = None
  7285. if self.source is not None:
  7286. source = encode(self.source)
  7287. arguments = []
  7288. arguments.append(encode(self.target))
  7289. arguments.append(b'Cannot change mode for other users')
  7290. return Line(source, b"502", arguments)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement