mirror of
https://github.com/kurbezz/discord-bot.git
synced 2025-12-06 07:05:36 +01:00
Compare commits
5 Commits
19e2207bc2
...
c4bcfe3b2b
| Author | SHA1 | Date | |
|---|---|---|---|
| c4bcfe3b2b | |||
| 05bd4bde27 | |||
| 46241f0b2e | |||
| c36622babf | |||
| c7c273cdac |
@@ -7,6 +7,7 @@ class TwitchConfig(BaseModel):
|
|||||||
class NotificationsConfig(BaseModel):
|
class NotificationsConfig(BaseModel):
|
||||||
start_stream: str
|
start_stream: str
|
||||||
change_category: str | None = None
|
change_category: str | None = None
|
||||||
|
redemption_reward: str | None = None
|
||||||
|
|
||||||
class GamesListConfig(BaseModel):
|
class GamesListConfig(BaseModel):
|
||||||
channel_id: int
|
channel_id: int
|
||||||
@@ -29,3 +30,5 @@ class StreamerConfig(BaseModel):
|
|||||||
twitch: TwitchConfig
|
twitch: TwitchConfig
|
||||||
notifications: NotificationsConfig
|
notifications: NotificationsConfig
|
||||||
integrations: IntegrationsConfig
|
integrations: IntegrationsConfig
|
||||||
|
|
||||||
|
chatbot_in_chats: list[int] | None = None
|
||||||
|
|||||||
@@ -304,18 +304,7 @@ class MessagesProc:
|
|||||||
)
|
)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
async def _on_custom_reward(cls, twitch: Twitch, event: MessageEvent):
|
async def on_message(cls, received_as: str, event: MessageEvent):
|
||||||
pass
|
|
||||||
# if event.channel_points_custom_reward_id:
|
|
||||||
# await twitch.send_chat_message(
|
|
||||||
# event.broadcaster_user_id,
|
|
||||||
# config.TWITCH_ADMIN_USER_ID,
|
|
||||||
# "Спасибо за поддержку!",
|
|
||||||
# reply_parent_message_id=event.message_id
|
|
||||||
# )
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
async def on_message(cls, event: MessageEvent):
|
|
||||||
if event.chatter_user_name in cls.FULL_IGNORED_USER_LOGINS:
|
if event.chatter_user_name in cls.FULL_IGNORED_USER_LOGINS:
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -323,10 +312,9 @@ class MessagesProc:
|
|||||||
|
|
||||||
await cls._update_history(event)
|
await cls._update_history(event)
|
||||||
|
|
||||||
twitch = await authorize(event.broadcaster_user_login)
|
twitch = await authorize(received_as)
|
||||||
|
|
||||||
await cls._goida(twitch, event)
|
await cls._goida(twitch, event)
|
||||||
await cls._lasqexx(twitch, event)
|
await cls._lasqexx(twitch, event)
|
||||||
await cls._ask_ai(twitch, event)
|
await cls._ask_ai(twitch, event)
|
||||||
await cls._kurbezz(twitch, event)
|
await cls._kurbezz(twitch, event)
|
||||||
await cls._on_custom_reward(twitch, event)
|
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ from pydantic import BaseModel
|
|||||||
|
|
||||||
from twitchAPI.object.eventsub import ChannelPointsCustomRewardRedemptionAddEvent
|
from twitchAPI.object.eventsub import ChannelPointsCustomRewardRedemptionAddEvent
|
||||||
|
|
||||||
|
from repositories.streamers import StreamerConfigRepository
|
||||||
from .twitch.authorize import authorize
|
from .twitch.authorize import authorize
|
||||||
|
|
||||||
|
|
||||||
@@ -33,8 +34,19 @@ async def on_redemption_reward_add(reward: RewardRedemption):
|
|||||||
|
|
||||||
twitch = await authorize(reward.broadcaster_user_login)
|
twitch = await authorize(reward.broadcaster_user_login)
|
||||||
|
|
||||||
|
streamer = await StreamerConfigRepository.get_by_twitch_id(int(reward.broadcaster_user_id))
|
||||||
|
|
||||||
|
if streamer.notifications.redemption_reward is None:
|
||||||
|
return
|
||||||
|
|
||||||
|
message = streamer.notifications.redemption_reward.format(
|
||||||
|
user=reward.user_name,
|
||||||
|
reward_title=reward.reward_title,
|
||||||
|
reward_promt=f" ({reward.reward_prompt})" if reward.reward_prompt else ""
|
||||||
|
)
|
||||||
|
|
||||||
await twitch.send_chat_message(
|
await twitch.send_chat_message(
|
||||||
reward.broadcaster_user_id,
|
reward.broadcaster_user_id,
|
||||||
reward.broadcaster_user_id,
|
reward.broadcaster_user_id,
|
||||||
f"🎉 {reward.user_name} just redeemed {reward.reward_title}! 🎉"
|
message
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -81,8 +81,11 @@ async def check_streams_states():
|
|||||||
"stream_notifications.on_message",
|
"stream_notifications.on_message",
|
||||||
retry_on_error=True
|
retry_on_error=True
|
||||||
)
|
)
|
||||||
async def on_message(event: MessageEvent):
|
async def on_message(
|
||||||
await MessagesProc.on_message(event)
|
received_as: str,
|
||||||
|
event: MessageEvent
|
||||||
|
):
|
||||||
|
await MessagesProc.on_message(received_as, event)
|
||||||
|
|
||||||
|
|
||||||
@broker.task(
|
@broker.task(
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ from twitchAPI.twitch import Twitch
|
|||||||
from twitchAPI.object.eventsub import StreamOnlineEvent, ChannelUpdateEvent, ChannelChatMessageEvent, ChannelPointsCustomRewardRedemptionAddEvent
|
from twitchAPI.object.eventsub import StreamOnlineEvent, ChannelUpdateEvent, ChannelChatMessageEvent, ChannelPointsCustomRewardRedemptionAddEvent
|
||||||
from twitchAPI.oauth import validate_token
|
from twitchAPI.oauth import validate_token
|
||||||
|
|
||||||
from core.config import config
|
|
||||||
from repositories.streamers import StreamerConfigRepository, StreamerConfig
|
from repositories.streamers import StreamerConfigRepository, StreamerConfig
|
||||||
from modules.stream_notifications.tasks import on_stream_state_change, on_stream_state_change_with_check, on_message, on_redemption_reward_add_task
|
from modules.stream_notifications.tasks import on_stream_state_change, on_stream_state_change_with_check, on_message, on_redemption_reward_add_task
|
||||||
from modules.stream_notifications.state import UpdateEvent, EventType
|
from modules.stream_notifications.state import UpdateEvent, EventType
|
||||||
@@ -55,6 +54,7 @@ class TwitchService:
|
|||||||
|
|
||||||
async def on_message(self, event: ChannelChatMessageEvent):
|
async def on_message(self, event: ChannelChatMessageEvent):
|
||||||
await on_message.kiq(
|
await on_message.kiq(
|
||||||
|
self.streamer.twitch.name,
|
||||||
MessageEvent.from_twitch_event(event)
|
MessageEvent.from_twitch_event(event)
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -100,17 +100,20 @@ class TwitchService:
|
|||||||
await eventsub.listen_channel_update_v2(str(streamer.twitch.id), self.on_channel_update)
|
await eventsub.listen_channel_update_v2(str(streamer.twitch.id), self.on_channel_update)
|
||||||
case "listen_stream_online":
|
case "listen_stream_online":
|
||||||
await eventsub.listen_stream_online(str(streamer.twitch.id), self.on_stream_online)
|
await eventsub.listen_stream_online(str(streamer.twitch.id), self.on_stream_online)
|
||||||
case "listen_channel_chat_message":
|
|
||||||
await eventsub.listen_channel_chat_message(
|
|
||||||
str(streamer.twitch.id),
|
|
||||||
str(config.TWITCH_ADMIN_USER_ID),
|
|
||||||
self.on_message
|
|
||||||
)
|
|
||||||
case "listen_channel_points_custom_reward_redemption_add":
|
case "listen_channel_points_custom_reward_redemption_add":
|
||||||
await eventsub.listen_channel_points_custom_reward_redemption_add(
|
await eventsub.listen_channel_points_custom_reward_redemption_add(
|
||||||
str(streamer.twitch.id),
|
str(streamer.twitch.id),
|
||||||
self.on_channel_points_custom_reward_redemption_add
|
self.on_channel_points_custom_reward_redemption_add
|
||||||
)
|
)
|
||||||
|
case "listen_channel_chat_message":
|
||||||
|
chatbot_in_chats = streamer.chatbot_in_chats or []
|
||||||
|
|
||||||
|
for chat_id in chatbot_in_chats:
|
||||||
|
await eventsub.listen_channel_chat_message(
|
||||||
|
str(chat_id),
|
||||||
|
str(streamer.twitch.id),
|
||||||
|
self.on_message
|
||||||
|
)
|
||||||
case _:
|
case _:
|
||||||
raise ValueError("Unknown method")
|
raise ValueError("Unknown method")
|
||||||
|
|
||||||
@@ -127,8 +130,8 @@ class TwitchService:
|
|||||||
await gather(
|
await gather(
|
||||||
self.subscribe_with_retry("listen_channel_update_v2", eventsub, streamer),
|
self.subscribe_with_retry("listen_channel_update_v2", eventsub, streamer),
|
||||||
self.subscribe_with_retry("listen_stream_online", eventsub, streamer),
|
self.subscribe_with_retry("listen_stream_online", eventsub, streamer),
|
||||||
# self.subscribe_with_retry("listen_channel_chat_message", eventsub, streamer),
|
self.subscribe_with_retry("listen_channel_points_custom_reward_redemption_add", eventsub, streamer),
|
||||||
self.subscribe_with_retry("listen_channel_points_custom_reward_redemption_add", eventsub, streamer)
|
self.subscribe_with_retry("listen_channel_chat_message", eventsub, streamer),
|
||||||
)
|
)
|
||||||
logger.info(f"Subscribe to events for {streamer.twitch.name} done")
|
logger.info(f"Subscribe to events for {streamer.twitch.name} done")
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user