Skip to content
This repository was archived by the owner on Sep 26, 2022. It is now read-only.

Commit b815855

Browse files
committed
改bug
1 parent 11ff462 commit b815855

File tree

3 files changed

+31
-18
lines changed

3 files changed

+31
-18
lines changed

Discord.py

+10-7
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,27 @@
11
import APIKey
22
import logging
33
import discord
4+
import asyncio
45

56

67
class DiscordClient(discord.Client):
7-
self.channel = None
8+
channel = None
89

9-
def __init__(self, manage):
10+
def __init__(self, manage=None):
11+
super().__init__()
1012
self.manage = manage
11-
self.client = discord.Client()
1213

13-
async def start(self):
14-
await client.start(APIKey.dc_bot_token)
14+
def set_manage(self, manage):
15+
self.manage = manage
1516

1617
async def on_ready(self):
17-
print('Discord:We have logged in as {0.user}'.format(client))
18+
print(f'Discord:We have logged in as {self.user}')
1819

1920
async def on_message(self, message):
20-
if message.author == client.user:
21+
if message.author == self.user:
2122
return
23+
logging.debug(
24+
'DiscordClient.on_message.message.content:'+message.content)
2225
if message.content.startswith('/vtblive hello'):
2326
await message.channel.send('Hello!')
2427
elif message.content.startswith('/vtblive init'):

LiveStreams.py

+15-7
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,20 @@
1313

1414

1515
class StreamerManager:
16+
discord = None
1617
streamers = {}
1718

19+
def __init__(self, discord=None):
20+
self.discord = discord
21+
1822
async def run(self):
1923
logging.debug('启动直播流管理')
2024
# while True:
2125
# for name, streamer in list(self.streamers.items()):
2226
# state = streamer.getState()
2327

2428
def Add(self, name, channelId):
25-
self.streamers[name] = Streamer(name, channelId)
29+
self.streamers[name] = Streamer(name, channelId, self.discord)
2630
print('成功添加:['+name+']'+channelId)
2731
return '成功添加:['+name+']'+channelId
2832

@@ -57,11 +61,11 @@ async def autocheck(self):
5761
state = await self.check()
5862
logging.debug(f'state:{state}--self.state:{self.state}')
5963
if state != self.state:
60-
self.changeRebroadcast(state)
64+
await self.changeRebroadcast(state)
6165
self.state = state
6266
await asyncio.sleep(15)
6367

64-
def changeRebroadcast(self, state):
68+
async def changeRebroadcast(self, state):
6569
logging.debug(f'改变转播状态:[{self.name}]{state}')
6670
if not state is None: # 正在直播中
6771
if not self.rbcThread is None:
@@ -72,13 +76,14 @@ def changeRebroadcast(self, state):
7276
self.queue.put((self.name, state))
7377
self.rbcThread = Rebroadcast.RebroadcastThread(self.queue)
7478
self.rbcThread.start()
75-
self.sendMessage(f'{self.name}正在直播中:https://www.youtube.com/watch?v={state}')
79+
await self.sendMessage(
80+
f'{self.name}正在直播中:https://www.youtube.com/watch?v={state}\n转播链接:https://live.acedroidx.top/?stream={self.name}')
7681
else: # 不在直播中
7782
if not self.rbcThread is None:
7883
self.queue.put('stop')
7984
self.rbcThread = None
8085
self.queue = None
81-
self.sendMessage(f'{self.name}直播已结束')
86+
await self.sendMessage(f'{self.name}直播已结束')
8287

8388
async def check(self):
8489
logging.debug('直播状态检测:'+self.name)
@@ -89,5 +94,8 @@ async def check(self):
8994
def getState(self):
9095
return self.state
9196

92-
def sendMessage(self,msg):
93-
self.discord.send_message(msg)
97+
async def sendMessage(self, msg):
98+
if self.discord is None:
99+
logging.warning('Streamer.discord is None')
100+
return
101+
await self.discord.send_message(msg)

main.py

+6-4
Original file line numberDiff line numberDiff line change
@@ -28,20 +28,22 @@ async def mainConsole(manager):
2828

2929
def exception_handler(loop, context):
3030
logging.error('Exception handler called')
31-
traceback.print_tb(context['exception'])
31+
traceback.print_exc()
3232

3333
if __name__ == "__main__":
3434
logging.basicConfig(
3535
format='%(asctime)s[%(levelname)s]%(threadName)s>%(message)s', level=logging.DEBUG)
36+
logging.getLogger('discord').setLevel(logging.INFO)
3637
logging.info('eventloop已启动')
37-
manager = LiveStreams.StreamerManager()
38-
discord = Discord.DiscordClient(manager)
38+
discord = Discord.DiscordClient()
39+
manager = LiveStreams.StreamerManager(discord)
40+
discord.set_manage(manager)
3941
# manager.Add('tamaki','UC8NZiqKx6fsDT3AVcMiVFyA')
4042
# add matsuri UCQ0UDLQCjY0rmuxCDE38FGg
4143
# add kizunaai UC4YaOt1yT-ZeyB0OmxHgolA
4244
asyncio.get_event_loop().set_debug(True)
45+
asyncio.ensure_future(discord.start(APIKey.dc_bot_token))
4346
asyncio.ensure_future(manager.run())
4447
asyncio.ensure_future(mainConsole(manager))
45-
asyncio.ensure_future(discord.start(manager))
4648
asyncio.get_event_loop().set_exception_handler(exception_handler)
4749
asyncio.get_event_loop().run_forever()

0 commit comments

Comments
 (0)