Skip to content
This repository was archived by the owner on Jan 5, 2026. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,10 @@

from http import HTTPStatus
from botbuilder.schema import Activity, ActivityTypes, ChannelAccount
from botbuilder.core import ActivityHandler, InvokeResponse, BotFrameworkAdapter
from botbuilder.core.turn_context import TurnContext
from botbuilder.core.teams.teams_info import TeamsInfo
from botbuilder.core.teams.teams_helper import deserializer_helper
from botbuilder.core import ActivityHandler, InvokeResponse, BotFrameworkAdapter
from botbuilder.schema.teams import (
AppBasedLinkQuery,
TeamInfo,
Expand Down Expand Up @@ -357,47 +358,43 @@ async def on_teams_members_added_dispatch_activity( # pylint: disable=unused-ar
team_info: TeamInfo,
turn_context: TurnContext,
):
"""

team_members = {}
team_members_added = []
for member in members_added:
if member.additional_properties != {}:
team_members_added.append(TeamsChannelAccount(member))
team_members_added.append(
deserializer_helper(TeamsChannelAccount, member)
)
else:
if team_members == {}:
result = await TeamsInfo.get_members_async(turn_context)
team_members = { i.id : i for i in result }
result = await TeamsInfo.get_members(turn_context)
team_members = {i.id: i for i in result}

if member.id in team_members:
team_members_added.append(member)
else:
newTeamsChannelAccount = TeamsChannelAccount(
new_teams_channel_account = TeamsChannelAccount(
id=member.id,
name = member.name,
aad_object_id = member.aad_object_id,
role = member.role
)
team_members_added.append(newTeamsChannelAccount)

return await self.on_teams_members_added_activity(teams_members_added, team_info, turn_context)
"""
team_accounts_added = []
for member in members_added:
# TODO: fix this
new_account_json = member.serialize()
if "additional_properties" in new_account_json:
del new_account_json["additional_properties"]
member = TeamsChannelAccount(**new_account_json)
team_accounts_added.append(member)
name=member.name,
aad_object_id=member.aad_object_id,
role=member.role,
)
team_members_added.append(new_teams_channel_account)

return await self.on_teams_members_added_activity(
team_accounts_added, turn_context
team_members_added, team_info, turn_context
)

async def on_teams_members_added_activity(
self, teams_members_added: [TeamsChannelAccount], turn_context: TurnContext
async def on_teams_members_added_activity( # pylint: disable=unused-argument
self,
teams_members_added: [TeamsChannelAccount],
team_info: TeamInfo,
turn_context: TurnContext,
):
teams_members_added = [
ChannelAccount(**member.serialize()) for member in teams_members_added
ChannelAccount().deserialize(member.serialize())
for member in teams_members_added
]
return await super().on_members_added_activity(
teams_members_added, turn_context
Expand All @@ -415,7 +412,9 @@ async def on_teams_members_removed_dispatch_activity( # pylint: disable=unused-
new_account_json = member.serialize()
if "additional_properties" in new_account_json:
del new_account_json["additional_properties"]
teams_members_removed.append(TeamsChannelAccount(**new_account_json))
teams_members_removed.append(
TeamsChannelAccount().deserialize(new_account_json)
)

return await self.on_teams_members_removed_activity(
teams_members_removed, turn_context
Expand All @@ -425,7 +424,8 @@ async def on_teams_members_removed_activity(
self, teams_members_removed: [TeamsChannelAccount], turn_context: TurnContext
):
members_removed = [
ChannelAccount(**member.serialize()) for member in teams_members_removed
ChannelAccount().deserialize(member.serialize())
for member in teams_members_removed
]
return await super().on_members_removed_activity(members_removed, turn_context)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,14 +35,6 @@ async def on_conversation_update_activity(self, turn_context: TurnContext):
self.record.append("on_conversation_update_activity")
return await super().on_conversation_update_activity(turn_context)

async def on_teams_members_added_activity(
self, teams_members_added: [TeamsChannelAccount], turn_context: TurnContext
):
self.record.append("on_teams_members_added_activity")
return await super().on_teams_members_added_activity(
teams_members_added, turn_context
)

async def on_teams_members_removed_activity(
self, teams_members_removed: [TeamsChannelAccount], turn_context: TurnContext
):
Expand Down Expand Up @@ -342,33 +334,6 @@ async def test_on_teams_team_renamed_activity(self):
assert bot.record[0] == "on_conversation_update_activity"
assert bot.record[1] == "on_teams_team_renamed_activity"

async def test_on_teams_members_added_activity(self):
# arrange
activity = Activity(
type=ActivityTypes.conversation_update,
channel_data={"eventType": "teamMemberAdded"},
members_added=[
ChannelAccount(
id="123",
name="test_user",
aad_object_id="asdfqwerty",
role="tester",
)
],
channel_id=Channels.ms_teams,
)

turn_context = TurnContext(NotImplementedAdapter(), activity)

# Act
bot = TestingTeamsActivityHandler()
await bot.on_turn(turn_context)

# Assert
assert len(bot.record) == 2
assert bot.record[0] == "on_conversation_update_activity"
assert bot.record[1] == "on_teams_members_added_activity"

async def test_on_teams_members_removed_activity(self):
# arrange
activity = Activity(
Expand All @@ -385,7 +350,7 @@ async def test_on_teams_members_removed_activity(self):
channel_id=Channels.ms_teams,
)

turn_context = TurnContext(NotImplementedAdapter(), activity)
turn_context = TurnContext(SimpleAdapter(), activity)

# Act
bot = TestingTeamsActivityHandler()
Expand Down