Skip to content

Commit

Permalink
Merge branch 'main' of github.com:UNICT-DMI/Welcome-Bot
Browse files Browse the repository at this point in the history
  • Loading branch information
Helias committed Mar 30, 2024
2 parents 33bf3d0 + 8d87c11 commit b1356dd
Show file tree
Hide file tree
Showing 4 changed files with 71 additions and 43 deletions.
42 changes: 6 additions & 36 deletions .github/workflows/docker.yml
Original file line number Diff line number Diff line change
@@ -1,41 +1,11 @@
name: Create and publish a Docker image

on:
push:
branches: ['main']

env:
REGISTRY: ghcr.io
IMAGE_NAME: ${{ github.repository }}
branches:
- "main"

jobs:
build-and-push-image:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write

steps:
- name: Checkout repository
uses: actions/checkout@v2

- name: Log in to the Container registry
uses: docker/login-action@f054a8b539a109f9f41c372932f1ae047eff08c9
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Extract metadata (tags, labels) for Docker
id: meta
uses: docker/metadata-action@98669ae865ea3cffbcbaa878cf57c20bbf1c6c38
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}

- name: Build and push Docker image
uses: docker/build-push-action@ad44023a93711e3deb337508980b4b5e9bcdc5dc
with:
context: .
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
build:
uses: unict-dmi/reusable-workflows/.github/workflows/docker.yml@main
with:
repo_ref: ${{ github.repository }}
27 changes: 24 additions & 3 deletions src/main.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from os import getenv
from telegram import Update, User
from telegram.ext import ApplicationBuilder, MessageHandler, CallbackContext, filters
from telegram.ext import ApplicationBuilder, MessageHandler, CallbackContext, CommandHandler, filters
from json import load
from random import randrange

Expand All @@ -21,13 +21,31 @@ def generate_welcome(new_member: User) -> str:
with open("src/welcome.json", "r") as f:
wlc_mess_list = load(f)[lan_code]

return wlc_mess_list[randrange(0, len(wlc_mess_list))].replace("USER", new_member_username)
return wlc_mess_list['sentences'][randrange(0, len(wlc_mess_list))].replace("USER", new_member_username)


async def send_welcome(update: Update, _: CallbackContext) -> None:
for new_member in update['message']['new_chat_members']:
if not new_member['is_bot']:
await update.message.reply_text(f'{generate_welcome(new_member)}')
lan_code = new_member["language_code"] or "it"
with open("src/welcome.json", "r") as f:
welcome_file = load(f)

welcome_msg = f'{generate_welcome(new_member)}\n'\
f'- README: 👉 {welcome_file["readme"]}\n'\
f'- {welcome_file[lan_code]["utils"][randrange(0, len(welcome_file[lan_code]["utils"]))]}'
await update.message.reply_text(f'{welcome_msg}')


async def command_start(update: Update, _) -> None:
lan_code = 'it' if update.message.from_user.language_code == 'it' else 'en'
reply = ''

with open("src/welcome.json", "r") as f:
reply = load(f)[lan_code]['start_message']

await update.message.reply_text(reply)


def main() -> None:
token = getenv("QDBotToken")
Expand All @@ -36,6 +54,9 @@ def main() -> None:
filters.ChatType.GROUPS & filters.StatusUpdate.NEW_CHAT_MEMBERS,
send_welcome
))
app.add_handler(CommandHandler(
"start", command_start
))
app.run_polling()


Expand Down
25 changes: 22 additions & 3 deletions src/welcome.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,23 @@
{
"it": ["Benvenuto USER nel nostro gruppo ^-^","Ciao USER!","Salve USER!"],
"en": ["Welcome USER to our group ^-^","Hello USER!","Howdy USER!"]
}
"it": {
"sentences" : ["Benvenuto USER nel nostro gruppo ^-^","Ciao USER!","Salve USER!"],
"utils" : [
"Se hai idee o suggerimenti, condividili con noi. Siamo aperti a nuove prospettive",
"Non esitare a fare domande se hai bisogno di aiuto",
"Speriamo che ti possa sentire come a casa tua",
"Ricorda di rispettare le opinioni degli altri membri, anche se non sempre concordi. La diversità ci arricchisce"
],
"start_message": "Ciao! Sono il Welcome-Bot, aggiungimi a un gruppo per dare il benvenuto ai nuovi membri!"
},
"en": {
"sentences" : ["Welcome USER to our group ^-^","Hello USER!","Howdy USER!"],
"utils" : [
"If you have ideas or suggestions, please share them with us. We are open to new perspectives!",
"Don't hesitate to ask questions if you need help",
"We hope you can feel at home",
"Remember to respect other members' opinions, even if you don't always agree. Diversity enriches us."
],
"start_message": "Hi! I'm the Welcome-Bot, add me to a group to welcome your new users!"
},
"readme" : "https://t.me/c/1095167198/67194/67418"
}
20 changes: 19 additions & 1 deletion tests/main_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
def get_wel(lan_code: str) -> str:

with open("src/welcome.json", "r") as f:
wlc_mess_list = main.load(f)[lan_code]
wlc_mess_list = main.load(f)[lan_code]['sentences']

#first element of the list
return wlc_mess_list[0].replace("USER","@user")
Expand Down Expand Up @@ -60,6 +60,24 @@ def get_wel(lan_code: str) -> str:
'mock_obj': [main, Application],
'mock_func': ['getenv', 'run_polling'],
'mock_ret': ['123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11', True]
},
{
'func': main.command_start,
'expected_res': None,
'arg': (main.Update(0, message=Message(0, from_user=possible_users[4], chat=Chat(0, type='GROUP'), date=datetime.now())), None),
'mock_obj': [Message],
'mock_func': ['reply_text'],
'mock_ret': [True],
'is_async': True
},
{
'func': main.command_start,
'expected_res': None,
'arg': (main.Update(0, message=Message(0, from_user=possible_users[5], chat=Chat(0, type='GROUP'), date=datetime.now())), None),
'mock_obj': [Message],
'mock_func': ['reply_text'],
'mock_ret': [True],
'is_async': True
}
]

Expand Down

0 comments on commit b1356dd

Please sign in to comment.