Browse Source

Merge pull request 'examples/automod' (#15) from examples/automod into main

Reviewed-on: https://git.chapo.chat/chapo-collective/hexbear-python/pulls/15
main
ScreamoBMO 2 years ago
parent
commit
a2c3038961
  1. 49
      examples/spam_automod.py
  2. 6
      hexbear/v1/user.py

49
examples/spam_automod.py

@ -0,0 +1,49 @@
import asyncio
import typing as T
from hexbear import v1 as api
async def autoban_spam(
spam_ban_reasons: dict[str, T.Optional[str]],
jwt_token: str
):
"""Run to monitor comments for known spam, remove the spam, and autoban the user"""
print("Spam Automod reporting for duty")
async for comment_response in api.ws.stream_all_comments():
comment = comment_response.comment
if comment.content in spam_ban_reasons:
# Reply with PPB
request = api.comment.CreateCommentRequest(
content=':ppb:',
parent_id=comment.id,
post_id=comment.post_id,
form_id=None,
auth=jwt_token,
)
response = await api.comment.create(request)
if response.is_ok():
print(f"{comment.creator_name} got PPB'd")
else:
print(f"Failed to PPB {comment.creator_name}")
print(response)
# Siteban
default_reason = "Spam Automod"
reason = spam_ban_reasons.get(
comment.content,
default=default_reason
)
reason = reason if reason is not None else default_reason
request = api.user.BanUserRequest(
user_id=comment.user_id,
ban=True,
auth=jwt_token,
reason=reason
)
response = await api.user.ban(request)
if response.is_ok():
print(f"{comment.creator_name} was banned")
else:
print(f"Failed to ban {comment.creator_name}")
print(response)
print("Spam Automod logging off o7")

6
hexbear/v1/user.py

@ -172,10 +172,10 @@ async def join(payload: UserJoinRequest, base_url: str = lib.BASE_URL):
class BanUserRequest(T.NamedTuple):
user_id: int
ban: bool
remove_data: T.Optional[bool]
reason: T.Optional[str]
expires: T.Optional[int]
auth: str
reason: T.Optional[str]
remove_data: T.Optional[bool] = None
expires: T.Optional[int] = None
class BanUserResponse(T.NamedTuple):

Loading…
Cancel
Save